use strict; use warnings; my @rawList = qw( CORE1 COREA11 CORE12 COREA130 CORE8 CORE233 COREA12 COREA115 ); my @sortedList = # Join letter and number parts back together map{$_->[0] . $_->[1]} # sort first by letter part, then if that is equal sort by number part sort {$a->[0] cmp $b->[0] || $a->[1] <=> $b->[1]} # Use a regex to split each item into a letter part and a number part map{[/([^\d]+)([\d]+)/]} @rawList; print join "\n", @sortedList; #### CORE1 CORE8 CORE12 CORE233 COREA11 COREA12 COREA115 COREA130