我有一个程序可以找到目录中的所有文件,并创建一个名称和大小的哈希数组。
例如
%files = ("file1" => 10, "file2" => 30, "file3" => 5);
我希望能够按大小降序对文件进行排序,并将名称/值添加到新数组中。
例如
%filesSorted = ("file2" => 30, "file1" => 10, "file3" => 5);
我找到了许多方法按值对数组进行排序,然后打印值,但这不是我想要的。
答案 0 :(得分:6)
您必须按排序顺序将文件名放入数组。与Perl哈希不同,数组是有序的,并将保留其顺序。此代码使用您自己的数据
演示了这一点use strict;
use warnings;
my %files = (file1 => 10, file2 => 30, file3 => 5);
my @sorted = sort { $files{$b} <=> $files{$a} } keys %files;
foreach my $file (@sorted) {
print "$file => $files{$file}\n";
}
<强>输出强>
file2 => 30
file1 => 10
file3 => 5