my @uniq = keys %{{ map { $_ => undef } @proc_name1 }}; #### use strict; use warnings; use Benchmark q{cmpthese}; my @arr = ( q{a} .. q{z} ) x 1_000; cmpthese( -10, { useGrep => sub { my %seen; my @out = grep { !$seen{$_}++ } @arr; return @out; }, useSlice => sub { my %seen; @seen{@arr} = (); my @out = keys %seen; return @out; }, useRef => sub { my @out = keys %{ { map { $_ => undef } @arr } }; return @out; }, } ); #### Rate useRef useGrep useSlice useRef 74.3/s -- -64% -84% useGrep 204/s 175% -- -56% useSlice 464/s 525% 127% --