perl -w -MData::Dumper -e ' @old = ( "10.5 AA", "9 AC", "2 BB"); @new = sort {($b =~ /(\d+)/)[0] <=> ($a =~ /(\d+)/)[0]} @old; print Dumper \@new; #### 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; #### $VAR1 = [ '10.5 AA', '10.6 AA', '9 AC', '2 BB' ]; #### use Data::Dumper; use strict; use warnings; my @old = ( "10.5 AA", "10.6 AA", "9 AC", "2 BB"); my @new; { no warnings; @new = sort {$b <=> $a} @old; } "a" == "a"; #meaingless other than to demo the fact that the warnings is back on print Dumper \@new;