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

Re^6: Using grep and glob to find directories containing file

by muba (Priest)
on Feb 04, 2013 at 02:52 UTC ( #1016889=note: print w/ replies, xml ) Need Help??


in reply to Re^5: Using grep and glob to find directories containing file
in thread Using grep and glob to find directories containing file

That's not a list, that's the comma operator in scalar context, which will disregard its left hand value and return its right hand value.

So in my $x = ('a', 'b', 'c');, 'a' and 'b' get discarded, and 'c' gets assigned to $x, as your snippet proves. This behaviour is documented (see the link I gave) and also demonstrated by B::Deparse:

$ perl -MO=Deparse -E '$x = ("a", "b", "c");' use feature 'current_sub', 'evalbytes', 'fc', 'say', 'state', 'switch' +, 'unicode_strings', 'unicode_eval'; $x = ('???', '???', 'c'); -e syntax OK

However, =()= is an idiomatic way to enforce list context. The details are better explained in Perl Idioms Explained - my $count = () = /.../g than I could do it myself, but just to demonstrate that it works, consider the following.

$ perl -MO=Deparse -E '$x =()= ("a", "b", "c"); print $x' use feature 'current_sub', 'evalbytes', 'fc', 'say', 'state', 'switch' +, 'unicode_strings', 'unicode_eval'; $x = () = ('a', 'b', 'c'); print $x; -e syntax OK $ perl -E '$x =()= ("a", "b", "c"); print $x' 3


Comment on Re^6: Using grep and glob to find directories containing file
Select or Download Code

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others chilling in the Monastery: (5)
As of 2015-07-03 22:50 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (57 votes), past polls