my @array = qw( 2aa 2ba 12kf 9cn 9vn 21sg ); my @idx= do { my @key = @array; s[(\d+)][ pack "N", $1 ]ge for @key; sort { $key[$a] cmp $key[$b] } 0..$#key; }; my @sorted= @array[@idx]; print "@sorted\n";