use strict; use warnings; use File::Copy::Recursive qw(rcopy); use File::Slurp; use Cwd; my $cwd = cwd(); my $dir = $ARGV[0]; my $orig_dir = "$cwd/$dir"; my $new_dir = "$cwd/your/path/"; my @first_scan = read_dir($orig_dir); #this will build an initial list #and put it into @first_scan; re_scan(); sub re_scan { #to rescan over and over while comparing my @new_scan = read_dir($new_dir); foreach my $element (@first_scan) { if ( $element ~~ @new_scan ) { print "$element Already Exists!\n"; } else { print "Copying $element to $new_dir\n"; rcopy( $orig_dir . $element, $new_dir . $element ); } } undef(@first_scan); for (@new_scan) { push( @first_scan, $_ ); } undef(@new_scan); sleep(3); ; re_scan(); }