sub splice_unique2 { my @sorted = sort qw{q w e r t y q w e r t y}; my $last = ''; my @unique = @sorted; my $removed = 0; for (0 .. $#sorted) { if ($sorted[$_] eq $last) { splice @unique, $_ - $removed++, 1; } else { $last = $sorted[$_]; } } } #### Rate splice_unique2 splice_unique shift_unique map_unique splice_unique2 83836/s -- -10% -15% -28% splice_unique 92839/s 11% -- -6% -20% shift_unique 99211/s 18% 7% -- -14% map_unique 115924/s 38% 25% 17% --