From the discussion, it seems that for some weird reason, you get different results in the mtime field of stat than you expect.
How are you building your expectation of what is correct?
The following program should output the correct mtime for each file, which should be identical with what the OS thinks, as verified via dir:
use strict;
for my $file (@ARGV) {
print "Checking '$file'\n";
if( -f $file ) {
system("dir $file");
my $mtime= (stat($file))[9];
print "Mtime: $mtime\n";
print "As string: " . localtime($mtime);
} else {
print "File '$file' does not exist, skipping\n";
};
};
__END__
Checking 'tmp.pl'
Volume in Laufwerk Q: hat keine Bezeichnung.
Volumeseriennummer: 5A02-C2B6
Verzeichnis von Q:\
06.11.2014 12:01 336 tmp.pl
1 Datei(en), 336 Bytes
0 Verzeichnis(se), 956.154.372.096 Bytes frei
Mtime: 1415271660
As string: Thu Nov 6 12:01:00 2014
Ideally, you should always find that the output of the timestamps as reported by dir are identical to the output of the timestamp as found via $mtime and output via localtime.