my @list = map {"E$_"} (1..20); for my $k (sort {substr($a, 1) <=> substr($b, 1)} @list) { print "$k "; } #### 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 "; }