2

配列のハッシュがあります。

%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";
}
4

1 に答える 1

4

配列のサイズを比較する必要があります。

foreach my $key ( sort { scalar @{$HoA{$b}} <=> scalar @{$HoA{$a}}} keys %HoA ) {
    print "$key\n";
}
于 2013-03-30T19:18:59.527 に答える