@nums = @caps = (); for (@articleid) { /([a-z]+)(\d+)/; push @caps, $1; push @nums, $2; } @newarr1 = @articleid[ sort { $nums[$a] <=> $nums[$b]} 0..$#articleid]; @result = @newarr1[sort { $caps[$a] cmp $caps[$b]} 0..$#newarr1];