my @array = qw(2aa 2ba 12kf 9cn 9vn 21sg); my @sorted = sort { $a.$b =~ /(\d+)([a-z]+)(\d+)([a-z]+)/; $1 <=> $2; $3 cmp $4; } @array; print join "\n", @sorted;