my @sorted_array = sort { sort_me(); } @array; sub sort_me { # get 2nd and 3rd nums my ($a_2,$a_3) = ($a =~ /A (\d+) A(\d+)/); my ($b_2,$b_3) = ($b =~ /A (\d+) A(\d+)/); # sort by second nums. If same, sort by 3rd $a_2 <=> $b_2 || $a_3 <=> $b_3; }