in reply to Function to replace a old file with newer version

On a system that has GNU mv (and perhaps other implementation of mv have the -u option as well), I'd do:
system mv => '-u', "B/ABC.txt", "A/ABC.txt" and die;
Perl, after all, is a glue language, and there's nothing wrong with reusing code.

Luckely, GNU fileutilities (which includes mv) have been ported to almost any platform Perl runs on (and then some).

Replies are listed 'Best First'.
Re^2: Function to replace a old file with newer version
by mr_mischief (Monsignor) on Nov 25, 2008 at 16:54 UTC
    That's a good solution. I was going to mention GNU cp. I'll do it here to keep mv and cp together in the suggestions.

    I'd like to point out to the OP that both support the -u option for copying or moving only updated files. So one can keep the original copy of the newer file with one or move it with the other depending on changing needs, and it's still the same option to trigger the same semantics of only acting if the source file is newer than the destination.

    GNU cp also can work recursively with the -r (or -R) option. With both (-u -r ) it can recursively copy directories and only overwrite an existing file if the source file is newer than the destination file or if the destination file doesn't already exist.

Re^2: Function to replace a old file with newer version
by hiradhu (Acolyte) on Nov 25, 2008 at 11:10 UTC
    Hi will this GNU mv work in Windows systems too? Do i need to install anything. I have activestate perl in a windows machine.
      Hi will this GNU mv work in Windows systems too?

      Couldn't spot a GNU mv.exe at http://gnuwin32.sourceforge.net/packages.html, though there could well be an mv.exe in one of those packages.

      Both Cygwin and MSYS do provide an mv.exe for Windows.

      Cheers,
      Rob
        mv is part of the GNU fileutils (aka coreutils) package. Hence, it's listed.