my $names = "John 20, Bill 34... etc"; my @elems = split( /\s*,\s*/, $names ); my %num2name = map{ reverse split( /\s/, $_ ) } @elems; my @sorted = map{ $num2name{$_} } sort { $a <=> $b } keys %num2name; print "@sorted\n";