2014-06-12 78 views
-1

我有一个目录列表,每个目录中有一个文件,我需要访问该文件的最新日期。按创建日期列出目录

我可以根据日期制作目录列表,然后拿走最后一个?如果是这样,我怎么能做到这一点,我看到了一些关于按日期排序文件的问题,但从来没有目录。

很多感谢

回答

2

,你有目录的单文件的列表中他们是无关的事实。

最终,你只是文件与路径列表(或者你会建造一个),然后就可以reduce列表与修改日期最近的文件(-M):

use strict; 
use warnings; 

use List::Util qw(reduce); 

my @files = qw(
    foo/file.txt 
    bar/file.txt 
    baz/file.txt 
); 

my $youngest = reduce {-M $a < -M $b ? $a : $b} @files; 

print $youngest, "\n"; 
+0

+ 1为减少。您可以在这里使用'<=>'(数字比较运算符)而不是'?:'吗? –

+1

不,必须使用'?:'来明确指定你想要返回的内容。 'reduce'具体返回块的结果,这就是为什么你可以做这样的事情,比如使用'reduce {$ a + $ b}来得到一个列表的总和' – Miller