It's easy to sort a hash by it's key, but to sort by it's value, the subroutines below are a life safer! From: http://www.perlfect.com/articles/sorting.shtml my %HASH = ( 'cats' => 29, 'dogs' => 85 ); # ascending, $a <=> $b foreach my $k ( sort { $HASH{$a} <=> $HASH{$b} } keys %HASH ) { printf "%6d %s\n",$HASH{$k},$k; } # descending, $b <=> $a foreach my $k ( sort { $HASH{$b} <=> $HASH{$a} } keys %HASH ) { printf "%6d %s\n",$HASH{$k},$k; }