To suggest a non perl solution, in the greatest tradition of why re-invent any round objects. You may want to take a look at the unix util rdist. Quote from rdist(1) below. Althought it does not solve your problem directly it may be of general interest.
Rdist is a program to maintain identical copies of files
over multiple hosts. It preserves the owner, group, mode,
and mtime of files if possible and can update programs that
are executing. Rdist reads commands from distfile to direct
the updating of files and/or directories. If distfile is
`-', the standard input is used. If no -f option is
present, the program looks first for `distfile', then `Dist-
file' to use as the input. If no names are specified on the
command line, rdist will update all of the files and direc-
tories listed in distfile. Otherwise, the argument is taken
to be the name of a file to be updated or the label of a
command to execute. If label and file names conflict, it is
assumed to be a label. These may be used together to update
specific files using specific commands.
--
Zigster