Beefy Boxes and Bandwidth Generously Provided by pair Networks
RobOMonk Welcome to the Monastery  Comment on  This is the way
I've usually seen it done. I was curious, so I ran a benchmark
against the two. use Benchmark; my @list; for ( 0..9999 ) { push
@list, sprintf "%d", 100 * rand ; } timethese( 1000, {
'keys_map' => sub { my @uniq = keys %{{ map {$_ => 1} @list }}
+; }, 'grep_seen' => sub { my %seen; my @uniq = grep !
$seen{$_}+ ++, @list; }, } ); Yields the following output.
Benchmark: timing 1000 iterations of grep_seen, keys_map...
grep_seen: 13 wallclock secs (11.17 usr + 0.00 sys = 11.17 CPU)
@ 89 +.52/s (n=1000) keys_map: 30 wallclock secs (29.28 usr +
0.00 sys = 29.28 CPU) @ 34 +.15/s (n=1000)   and:  <code> code
here </code>    • Please read these before you post! —
 For:     Use:     & &amp;     < &lt;     > &gt;     [ &#91;
] &#93;   • Log In?      What's my password?     Create A New
User     and the web crawler heard nothing...      How do I use
this? | Other CB clients     Ot