my %pop; my @poporder; for(@ary) { $pop{$_}++; } for(sort { $pop{$a} <=> $pop{$b} } keys %pop) { print "$_: $pop{$_}\n"; } # can also do @poporder = sort { $pop{$a} <=> $pop{$b} } keys %pop;