#!/usr/bin/perl -w %db = ( 'scores' => { 'user1' => 200, 'user2' => 190, 'user3' => 232, 'user4' => 187, 'user5' => 190 } ); my %scores; while (my ($u,$s) = each %{$db{'scores'}}){ push @{$scores{$s}}, $u; } my $i = 1; for(sort {$b <=> $a} keys %scores){ local $"=", "; print "$i Place: ($_ Points) @{$scores{$_}}\n"; $i++; } __END__ 1 Place: (232 Points) user3 2 Place: (200 Points) user1 3 Place: (190 Points) user2, user5 4 Place: (187 Points) user4