use 5.026; use warnings; my @aa = qw{ CORE1 CORE12 CORE8 duffdata CORE233 COREA11 COREA12 COREA130 COREA12b COREA115 }; say for map { substr $_, 54 } sort map { my( $letters, $digits ) = m{^([A-Za-z]+)(\d+)$} ? ( $1, $2 ) : ( q{}, 0 ); pack q{A50NA*}, $letters, $digits, $_; } @aa; #### COREA12b duffdata CORE1 CORE8 CORE12 CORE233 COREA11 COREA12 COREA115 COREA130