Beefy Boxes and Bandwidth Generously Provided by pair Networks
Welcome to the Monastery
 
PerlMonks  

Examples for "LIST", "list context", "list value", "list assigment", "list operator"

by LanX (Saint)
on Jul 19, 2020 at 13:55 UTC ( [id://11119521]=note: print w/replies, xml ) Need Help??


in reply to Re^2: Split does not behave like a subroutine
in thread Split does not behave like a subroutine

Sorry that's too complicated for me, TL;DR

> I have to understand what (LIST) means in the documentation.

According to the docs cited in

List's terminology and Parentheses in Perl

<updated>

Uppercase "LIST" in perldocs is a argument placeholder for any code ...

  • compiled in "list context"
  • delivering a "list value" at run time

For instance from the docs for print ...

print LIST; means that ...

  • print 1,2,3;

    the two commas are compiled to create a "list value" 1,2,3 for print

  • print @a;

    the array @a will be compiled to pass it's content as "list value" ( i.e.not his length from scalar context)

  • print func();

    the sub &func will be called in "list context" at run time and return a "list value" from it's last statement. ( compare wantarray )

</updated>

> To understand this:

> > The scalar comma operator returns the last element.

> I must understand in which list it is the last element.

Comma separated lists (sic)

Please compare (updated)

# --- list assignments @a = (1,2,3); # list comma @a = (1..3); # list range ($a) = @a; # deconstruction => $a==1 # --- scalar assignments $a = (1,2,3); # scalar comma $a = (1..3); # flip flop operator ... Oo oops! $a = @a; # scalar @a == length

The parens on RHS only do grouping here they do not create a list. Hence the context is propagated to the operators , and ..

@a = and (...)= are "list assignment" imposing "list context".

The range 1..3 returns the list value 1,2,3 in list context only.

You have to think of the whole statement as an op-tree...

  • propagating context down
  • passing "values" up

With ...

  • operators changed by upper context
  • operators (sometimes) creating down context

If that's not clear enough please show a short code exemplifying your problem.

HTH

Cheers Rolf
(addicted to the Perl Programming Language :)
Wikisyntax for the Monastery

update

you may want to play around yourself with B::Deparse and B::Concise to experiment around with the snippets shown

perl -MO=Deparse,-p -e "CODE"

and

perl -MO=Concise -e "CODE"

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others lurking in the Monastery: (4)
As of 2024-04-20 11:45 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found