use strict; use warnings; my %games = ( abraham => "12::Soccer::1/1/2003", bertha => "10::Pool::3/3/2000", charly => "8::Basketball::5/5/2002", ); for (sort {$b->[0] <=> $a->[0]} map [split(/::/, $games{$_}), $_], keys %games ) { print $_->[-1], " score = ", $_->[0], "\tgame = ", $_->[1], "\n"; } #### abraham score = 12 game = Soccer bertha score = 10 game = Pool charly score = 8 game = Basketball