Beefy Boxes and Bandwidth Generously Provided by pair Networks
The stupid question is the question not asked
 
PerlMonks  

Re: Care to explain ++@h{@a,@b,@c,@d}; ?

by Aristotle (Chancellor)
on Apr 28, 2003 at 18:52 UTC ( [id://253789]=note: print w/replies, xml ) Need Help??


in reply to Care to explain ++@h{@a,@b,@c,@d}; ?
in thread Find unique elements from multiple arrays

Well, you know what
$hash{"key"}
does - give you access to the value stored in the hash under that key. In the same way, you can say
@hash{"key1", "key2"}
which gives you access to an entire list of values, indexed by the given keys. This is called a slice (and exists, in analogous form, for arrays too). Now, when you assign to that list, regardless of how many values you provide, all of the keys in the list pop into existence as entries in the hash. If there are not enough values given, any extraneous keys are assigned the undefined value. So
++@h{@a,@b,@c,@d};
leads to all of the values stored in @a etc being forced to become keys of the hash %h. And because hash keys cannot be duplicated, the list of keys for the resulting hash contains only one instance of each unique element from the arrays used as keys. I personally strongly prefer to write it as
@h{@a,@b,@c,@d} = ();
For all intents and purposes the effect is the same, it just doesn't look nearly as confusing as the ++ operator on the other one.

Makeshifts last the longest.

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others about the Monastery: (4)
As of 2024-04-23 07:13 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found