my %data = ( 'slashdot.org' => 180, 'cpan.org' => 150, 'perl.com' => 150, 'apache.org' => 120, ); my @ranks; my @keys = keys %data; @ranks[ sort { $data{$keys[$b]} cmp $data{$keys[$a]} } 0..$#keys ] = 1..@keys; print "key $keys[$_] has rank $ranks[$_]\n" for 0..$#ranks;