use strict; use warnings; use Benchmark qw(cmpthese); my @XYZ = qw(Mary Mary Mary Mary Joe Joe Joe); cmpthese ( -1, { 'GF' => sub {my %unique; @unique{@XYZ} = (); keys %unique;}, 'DW' => sub {keys %{{map {$_=>undef} @XYZ}};}, 'RJ' => sub {keys %{(grep \@{$_}{@XYZ}, {})[0]};}, } );