my @list = ( 'cat,1', 'dog,2', 'mouse,22', 'eel,11', 'elk,001', 'mink,13'); my %unsorted = map { reverse split /,/ } @list ; my @sorted = map { $unsorted{$_}.','.$_ } sort { $a <=> $b } keys %unsorted;