my @list = ( 'cat,1', 'dog,1', 'mouse,22', 'eel,22', 'elk,001', 'mink,13'); # as pointed by choroba, this can be put simpler # my %unsorted = map { $_ => [ reverse split /,/ ]->[0] } @list ; my %unsorted = map { $_ => [ split /,/ ]->[-1] } @list ; my @sorted = sort { $unsorted{$a} <=> $unsorted{$b} } keys %unsorted;