> > Looks like that question has been quite well covered.
> > Under Unix, my simple version can be reduced to:
> >
> >cat list.current | perl -ne 'print if not $seen{split'|'}++' > list.new
> 
> Not so.

Had you fooled for a moment!

> First, you've got quote problems.

Doh!  I'd prefer to change the outside quotes to doubles...

> Then you need to backslash the |.

I was under the impression that using single quotes on split
would protect it as a character and not a regex.  However, I
am wrong and a Perl 6 RPC exists for this... it should DWIM:

http://dev.perl.org/rfc/361.html

> Then you need to turn
> 
>   split /\|/
> 
> into
> 
>   (split /\|/)[3]

Opps!  NB: Also lost the lc() from this too :P

> because $hash{ split ... } calls split() in scalar context, and that ain't
> no good here.
> 
>   perl -ne '!$seen{(split/\|/)[3]}++&&print' input > output

perl -ne '!$seen{lc~~(split/\|/)[3]}++&&print' input > output

Much nicer... obviously I broke the rule of "Test, test and test before you
post" - again.  This one is tested, fortunately.  Note that we need:

perl -ne '/\S/&&!$seen{lc~~(split/\|/)[3]}++&&print' input > output

to get rid of the blank line, that appeared in the example snippet.

Jonathan Paton

=====
---------------BEGIN GEEKCODE BLOCK-----------v3.12
GCS/E d+ s+: a20 C++(+++)>$ UHL++>+++ P+++ L++>++++
E- W++(-) N+ o? K- w--- !O M-- !V PS-- PE++ Y++ PGP
t@ 5-- X-- R- tv- b  DI+ D- G++ e h! !r--->++ !y---
----------------END GEEKCODE BLOCK-----------------
JAPH: print`perldoc perlembed`=~/(Ju.*)/,"\n"

__________________________________________________
Do You Yahoo!?
Everything you'll ever need on one web page
from News and Sport to Email and Music Charts
http://uk.my.yahoo.com

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to