more useful options | |
PerlMonks |
Re: What does !$saw{$_}++ meansby ZlR (Chaplain) |
on Jan 26, 2005 at 08:46 UTC ( [id://425142]=note: print w/replies, xml ) | Need Help?? |
Hello,
Here's my interpretation :
%saw is a hash. Now, this is used inside a grep applied to @in : this means that $_ will take each of the value in @in . Let's take the first value of @in : obviously it's not yet in %saw so the conditional !$saw{$_} is TRUE (it's a double negation) . Therefore grep validates and this first value goes into @out. At this time a little magic happens : after evaluation of !$saw{$_} the ++ is applied . I'm only guessing this happens because of some precedence of ! over ++ . So what if the second element of @in is the same as the first ? Well, since ++ happened , $saw{$_} will have a value of 1 and therefore !$saw{$_} will be FALSE : you will not get this repetition in the final @out . Hope this helps,
Question : I just checked in the camel book: Answer by ysth : nothing to do with arity , it's just that ! has higher precedence than ++ .
In Section
Seekers of Perl Wisdom
|
|