# Simplified for illustration. Will not work for OP. Would benefit from ST. sort { my ($a1,$a2) = $a =~ /([A-Z]*)(\d*)/; my ($b1,$b2) = $b =~ /([A-Z]*)(\d*)/; $a1 cmp $b1 || $a2 <=> $b2 } @list;