2
J'ai un hachage de tableaux.trier les clés dans le hachage de tableau par le nombre d'éléments dans le tableau
%HoA = (
'C1' => ['1', '3', '3', '3'],
'C2' => ['3','2'],
'C3' => ['1','3','3','4','5','5'],
'C4' => ['3','3','4'],
'C5' => ['1'],
);
Les valeurs du tableau n'ont pas d'importance en soi. Je voudrais trier les clés par la taille du tableau dans l'ordre décroissant. La sortie devrait ressembler.
C3 # this key contains an array with the most elements
C1
C4
C2
C5 # this key contains an array with the least elements
Je ne sais pas pourquoi cela ne fonctionne pas.
foreach my $key (sort { $HoA{$b} <=> $HoA{$a}} keys %HoA) {
print "$key\n";
}
'{@ {$ HoA {$ b}} <=> @ {$ HoA {$ a}}}' fonctionne aussi (w/o ' scalar'), puisque la comparaison numérique force un contexte scalaire. – Kenosis