use Data::Dumper; @old = ( "10.5 AA", "10.6 AA", "9 AC", "2 BB"); @new = sort {($b =~ /(\d+)/)[0] <=> ($a =~ /(\d+)/)[0]} @old; print Dumper \@new;