【发布时间】:2014-01-09 00:12:20
【问题描述】:
我正在尝试获取按修改日期排序的文件列表。我从 Sort Directory and list files based on date and time 修改了示例程序并尝试运行它。
sub get_sorted_files {
my $path = shift;
opendir my($dir), $path or die "can't opendir $path: $!";
my %hash = map {$_ => (stat($_))[9]}
map { "$dir$_" }
grep { m/.*/i }
readdir $dir;
closedir $dir;
return %hash;
}
my %files = get_sorted_files(".");
foreach my $keys (sort{$files{$a} <=> $files{$b}} keys %files) {
print "$keys\t", scalar localtime($files{$keys}), "\n";
}
我在我的 Windows XP 32 位机器上使用 Strawberry Perl 版本 5.12.1.0 运行它。
Windows 上的目录列表是:
输出是:
输出对我来说没有多大意义。这段代码出了什么问题,foreach 循环究竟是如何对文件列表进行排序的?
【问题讨论】: