Come recita perlfaq4 (http://pod2it.sourceforge.net/pods/perlfaq4.htm):
Come si ordina un hash (opzionalmente per valore invece che per chiave)?
Internamente, gli hash sono memorizzati in un modo che impedisce l'imposizione di un ordinamento sulle coppie chiave-valore. Si deve invece ordinare una lista delle chiavi o dei valori:
@chiavi = sort keys %hash; # ordinato per chiave
@chiavi = sort {
$hash{$a} cmp $hash{$b}
} keys %hash; # e per valore
Qui sotto facciamo un ordinamento numerico inverso per valore e, se due chiavi sono identiche, un ordinamento per lunghezza della chiave oppure, se anch'esso fallisse, per un'esplicita comparazione ASCII delle chiavi (beh, può darsi venga modificata dal vostro locale, consultate perllocale).
@chiavi = sort {
$hash{$b} <=> $hash{$a}
||
length($b) <=> length($a)
||
$a cmp $b
} keys %hash;