http://www.perlmonks.org?node_id=348495


in reply to Oldest file using -M

The thing with -M is that it measures the age of the files, in days since $^T, which is initially set by perl to the epoch time when your program started. When you are running in mod_perl, don't expect $^T to be anywhere near the the present time, because it will be set to the time when your apache child started up.

If you want to make sure that -M always returns a positive value (for all files created in the past), you need to do something like this:

$^T = time(); my $fileage = -M $filename;

However, in your case, it looks like all you care about is finding the oldest file in a list of files. That can be achieved easy enough:

my ($oldest_file) = sort { -M $b <=> -M $a } @filenames;

Update: merlyn correctly pointed out that setting $^T does not guarantee a positive return value for -M when the datestamp on a file is set to some time in the future.