in reply to Logfile checking

if ( scalar(@errors) gt 0 ) { } elsif ( scalar(@errors) eq 0 ) {

You are using text comparison on numerical values when you should be using numerical comparison.    Note that "0,0" does not equal "0" while 0.0 does equal 0.

if ( @errors > 0 ) { } elsif ( @errors == 0 ) {

open (CFG, "<", "$config") or die "Can't open config ($config) file: $ +!"; my $filename = "$drive:". "$fpath". "\\". "$fname"; copy ("$filename","$file2") or die "Copy f +ailed: $!"; copy ("$filename","$file2") or die "Copy failed: $!";

What's wrong with always quoting "$vars"?