And when i write something like that i usually change it
to something like:
my %seen;
my @unique = grep {not $seen{$_}++} <FILE>;
chomp @unique;
Or something similar. It might not be the best way
to do it, but it has one advantage...
It has nothing to do with using %_. It's mostly
because i'm very wary of changing $_ in map,
especially since i recently got very burned by
attempting such a thing...
jynx
update: at prompting, i'll mention that one could
write that as: my (%seen, @unique);
chomp( @unique = grep {not $seen{$_}++} <FILE> );
however, i think that would iterate twice as well. Then
again there's that point about premature optimization... ;-)
Update 2: after doing a benchmark, i've found that
the map solution is the fastest, followed by the one-line
chomp and last is the two-liner. The one-liner is
sufficiently fast enough that i would still prefer it,
although for readability and maintainability i might still
go with the two line version. To each their own...
Thanks demerphq for the learning experience... :-) |