2013-03-30 84 views
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

您必須比較數組的大小:

+5

'{@ {$家鄉地址{$ B}} <=> @ {$家鄉地址{$ A}}}'同樣適用(W/O'標量「),因爲數字比較強制標量上下文。 – Kenosis