我有一个数组哈希。
%HoA = (
'C1' => ['1', '3', '3', '3'],
'C2' => ['3','2'],
'C3' => ['1','3','3','4','5','5'],
'C4' => ['3','3','4'],
'C5' => ['1'],
);
数组中的值本身并不重要。我想按照数组的大小按降序对键进行排序。输出应该看起来像。
C3 # this key contains an array with the most elements
C1
C4
C2
C5 # this key contains an array with the least elements
我不知道为什么这不起作用。
foreach my $key ( sort { $HoA{$b} <=> $HoA{$a}} keys %HoA ) {
print "$key\n";
}
答案 0 :(得分:4)
您必须比较数组大小:
foreach my $key ( sort { scalar @{$HoA{$b}} <=> scalar @{$HoA{$a}}} keys %HoA ) {
print "$key\n";
}