Beefy Boxes and Bandwidth Generously Provided by pair Networks
Just another Perl shrine

Re^6: Using grep and glob to find directories containing file (list assignment)

by LanX (Chancellor)
on Feb 04, 2013 at 09:41 UTC ( #1016919=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

> Lists don't return their length in scalar context


With "goatse" it's a list _assignment_ = which in scalar context returns the number of list elements assigned.

But this was a scalar assignment.

>  my $x = ('a', 'b', 'c');

The LHS of the assignment operator decides about the context.

An example of scalar context of list context of assignment is

 while ( ($v,$k) = each %h )

It will terminate as soon as each returns an empty list, not when the lists last element (here $k) is undef.

Clearer now?

Cheers Rolf

PS: you replied to yourself twice.


I think analyzing the op-tree helps understanding the mechanism

lanx@nc10-ubuntu:~/org$ perl -MO=Terse -e'$x= ()=qw(a,b)' LISTOP (0x9bd0fe0) leave [1] OP (0x9be01e8) enter COP (0x9bb8860) nextstate BINOP (0x9b3ca48) sassign BINOP (0x9b21a58) aassign [2] UNOP (0x9b218c0) null [142] OP (0x9be3e40) pushmark SVOP (0x9c14638) const [3] PV (0x9b1dee0) "a,b" UNOP (0x9c14598) null [142] OP (0x9b19820) pushmark OP (0x9b3c980) stub UNOP (0x9be8630) null [15] PADOP (0x9b21940) gvsv GV (0x9b1dec0) *x -e syntax OK

(don't blame me for Larry's decision to call a list assignment aassign)

You see assignment BINOP is like a function called with arguments (RHS,LHS) and RHS is evaluated according to LHS context and assigned to LHS. (thats decided a compile time)

The RHS of the first BINOP is the second BINOP, not a list.

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1016919]
[LanX]: for centuries posh English speakers tried to approach French, that's where all the trouble starts
[Eily]: Just another Perl coeurs
[Eily]: (perl with hearts, 'Acker with a French accent is pronunced like coeurs)
[LanX]: IMHO 'ju' for 'u' happens in English where they can't pronounce the French u (or German )
[LanX]: and I'm sure I read that *hotel* used to be pronounced 'otel by the English upperclass
[Your Mother]: American English vowels are pretty lazy/mumbly in general.
[LanX]: talking about antisemitism, youtube automatic subtitles is entertaining shocking sometimes ... like when offering "Fruit Jews" as a drink
[Your Mother]: ...Come on you King of the Juice...
[Your Mother]: I actually know his kids.
LanX has to go/

How do I use this? | Other CB clients
Other Users?
Others lurking in the Monastery: (10)
As of 2017-03-27 17:15 GMT
Find Nodes?
    Voting Booth?
    Should Pluto Get Its Planethood Back?

    Results (320 votes). Check out past polls.