my @list = ("A15", "Y2", map {"E$_"} (1..20)); for my $k ( map {$_->[0]} sort {$a->[1] cmp $b->[1] || $a->[2] <=> $b->[2]} map {[$_, /(\D+)(\d+)/]} @list ) { print "$k "; }