Beefy Boxes and Bandwidth Generously Provided by pair Networks
P is for Practical
 
PerlMonks  

Re: The Mother Tongue

by mothra (Hermit)
on Sep 06, 2001 at 20:09 UTC ( #110610=note: print w/replies, xml ) Need Help??


in reply to The Mother Tongue

As an aside, you might not want to commit the: my %uniq; @uniq{@arr} = (1) x @arr; @arr = keys %uniq; idiom to memory too closely, because it's broken :)
my @arr = ("what", "the", "the", {"heck" => "I"}, {"heck" => "I"}, "don't", "get", "this"); my %uniq; @uniq{@arr} = (1) x @arr; @arr = keys %uniq; print join "\n", @arr;
prints:
this
don't
the
HASH(0x1002f4e0)
get
HASH(0x1002116c)
what
perldoc -q duplicate offers a few ways to do this depending on what you mean by "removing duplicates", but upon brief inspection it doesn't look like any of those would catch this problem either.

Hmmm...an interesting golf perhaps? :)

(Here's what it looks like in Python, if that helps any)

Replies are listed 'Best First'.
(MeowChow) Re2: The Mother Tongue
by MeowChow (Vicar) on Sep 06, 2001 at 20:50 UTC
    It's hardly broken; as with any code, one must understand how and why it works, what are its limitations, and not go about applying it blindly to every situation (eg. a deep compare of nested data structures). In any case, the simple-minded (shallow) approach is usually the one that is wanted for this task, especially when writing in OO-style.

    As a further aside, my idiom is usually:
      
    my %uniq; undef @uniq{@arr}; @arr = keys %uniq;

       MeowChow                                   
                   s aamecha.s a..a\u$&owag.print
      Or you could do:
      sub uniq { my %u; @u{@_} = @_; return values %u; } @a = uniq @a;

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://110610]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others meditating upon the Monastery: (6)
As of 2022-05-20 12:56 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    Do you prefer to work remotely?



    Results (73 votes). Check out past polls.

    Notices?