Beefy Boxes and Bandwidth Generously Provided by pair Networks
good chemistry is complicated,
and a little bit messy -LW
 
PerlMonks  

The Mother Tongue

by George_Sherston (Vicar)
on Sep 06, 2001 at 14:09 UTC ( [id://110532]=perlmeditation: print w/replies, xml ) Need Help??

I've learnt such a lot about perl the last month. Partly it's new things I learnt, and partly it's putting the bits I already knew into a wider perspective (every day I find a new way to use $_). And I was thinking about why I learnt so well here.

What I think is, it's like the difference between learning German from a book in England, or from a British teacher in a British school, and on the other hand learning German by going ski-ing with a bunch of Germans.

The first way is o.k. for getting you enough grammar and vocabulary you can read the editorial in Sueddeutsche Zeitung. But the second way, you get a lot of fringe benefits too:
(1) All the time, even when you're not speaking, you're picking up little bits of idiom, so you don't just learn how to make yourself understood, you learn fluency
(2) Any time you say something that doesn't sound quite right, even if it makes sense, you get to hear it said idiomatically right then and there when you're at your most receptive
(3) You hear people cracking jokes and discussing philosophy and girlfriends and so on, and the range of things you can talk about increases
(4) You get a fantastic sun tan.
(5) Learning is a fun part of everyday life, and when you come to grind through some vocab you find you've learnt it already
(6) Peer pressure makes you raise your game a bit, and sharpen up what you say before you say it

So, fellow monks, and kind Great Ones, thanks for tan!

Insta-update: It never rains but it pours. As I was writing I saw this exchange:
<john-paul> Hi I was wondering if someone could point me in the right direction.If i have an array what's the quickest way to remove duplicate elements?
<davorg> john-paul: use a hash slice. my %uniq; @uniq{@arr} = (1) x @arr; @arr = keys %uniq;

And after a brisk exchange of /msgs with the obliging davorg, I'm richer by a couple of idioms. That's EXACTLY what I mean - to me this is one of the best things (among many) about PM. Thanks all.

§ George Sherston

Replies are listed 'Best First'.
Re: The Mother Tongue
by mothra (Hermit) on Sep 06, 2001 at 20:09 UTC
    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)

      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: perlmeditation [id://110532]
Approved by root
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others musing on the Monastery: (2)
As of 2024-04-26 05:13 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found