Is there a standard way to do it?
No but there are many ways to do it. Here is one:
#!/usr/bin/env perl
use strict;
use warnings;
use List::Util 'reduce';
use Path::Tiny 'path';
my @files = qw/a b c/;
my $dir = '/tmp/';
print newest($dir, @files) . "\n";
sub newest {
my $dir = shift;
my $newest = reduce { $a->stat->mtime > $b->stat->mtime ? $a : $b
+}
map { path "$dir/$_" }
@_;
return "$newest";
}
I've passed the files as an array since that is much more useful (in a generic sense) than your hashref. Feel free to modify for your own purposes, of course. If your list of files is (or might be) very long then consider a transform to avoid excessive stat calls.