The statement
my $command = qq(copy "$source1" "$dest1") or die "Couldn't copy $source1: $!";
isn't doing what you appear to think it is. Try qx() instead of qq()
Comment on Re: my compiled perl script is waiting for input
qx() won't do what he wants either. He just needs to move the "or die" part down a few lines so that it is after the call to system and change it to "and die" since system is about the only Perl routine that return a false value for success.