Internally, hashes are stored in a way that prevents you from imposing an order on key-value pairs. Instead, you have to sort a list of the keys or values:
@keys = sort keys %hash; # sorted by key
@keys = sort {
$hash{$a} cmp $hash{$b}
} keys %hash; # and by valueHere we'll do a reverse numeric sort by value, and if two keys are
identical, sort by length of key, or if that fails, by straight ASCII
comparison of the keys (well, possibly modified by your locale--see
perllocale).
@keys = sort {
$hash{$b} <=> $hash{$a}
||
length($b) <=> length($a)
||
$a cmp $b
} keys %hash;