http://www.perlmonks.org?node_id=279122


in reply to Re: Order-Preserving and Unique: List Cleanup
in thread Order-Preserving and Unique: List Cleanup

If that's the case, then why not just use the (much simpler, and easier to read) solution from this reply to the orriginal thread...
my %seen =() ;
@unique_array = grep { ! $seen{$_}++ } @non_unique_array ;

Oh my, that is nicer! Well, that's what's great about Perl Monks. I think I may not have understood the thread referred to: I thought there was some issue with this solution where it would fail in some case. If I misunderstood, thanks for setting it straight for me!

Update (Wed Jul 30 2003 18:02 UTC):

So the rendition of this code which can act like a *NIX filter as well as handle input as @ARGV, is (using -l to put a final NL on):

*nixprompt$ perl -le ' my %seen = (); my @ayin = $ARGV[0]? @ARGV : (<STDIN>); chomp @ayin; print join "\n", grep { !$seen{$_}++ } @ayin;'

Beautiful!

Replies are listed 'Best First'.
Re: Re: Order-Preserving and Unique: List Cleanup
by Chady (Priest) on Jul 30, 2003 at 11:59 UTC