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.