We don't bite newbies here... much PerlMonks

### Re: Not understanding 2 sentences in perldoc

by choroba (Archbishop)
 on Jul 29, 2020 at 20:13 UTC Need Help??

in reply to Not understanding 2 sentences in perldoc

List assignment:
```my (\$x, \$y, \$z) = qw( 1 2 3 );

List assignment in list context produces a list of lvalues:

```(my (\$x, \$y, \$z) = qw( 1 2 3 )) = qw( a b c ); # \$x = 'a', \$y = 'b', \$
+z = 'c'.

List assignment in scalar context:

```print scalar (my (\$x, \$y, \$z) = qw( a b c d ));  # 4

Modifying a scalar assignment:

```(\$x = 12) =~ s/1/4/; print \$x;  # 42

map{substr\$_->[0],\$_->[1]||0,1}[\*||{},3],[[]],[ref qr-1,-,-1],[{}],[sub{}^*ARGV,3]

Replies are listed 'Best First'.
Re^2: Not understanding 2 sentences in perldoc
by Anonymous Monk on Jul 29, 2020 at 20:23 UTC
List assignment in list context produces a list of lvalues:

(my (\$x, \$y, \$z) = qw( 1 2 3 )) = qw( a b c ); # \$x = 'a', \$y = 'b', \$z = 'c'.

What is the lvalues here?
> What is the lvalues here?

(\$x, \$y, \$z) are after the first assignment ready for the second one.

Lvalue means left value of assignment (the recipient)

• lvalue

Term used by language lawyers for a storage location you can assign a new value to, such as a variable or an element of an array. The “l” is short for “left”, as in the left side of an assignment, a typical place for lvalues. An lvaluable function or expression is one to which a value may be assigned, as in pos(\$x) = 10 .

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

"(\$x, \$y, \$z) are after the first assignment ready for the next one." The next one is the assignment to qw( a b c ); ?

And what happens to qw( 1 2 3 ) in (my (\$x, \$y, \$z) = qw( 1 2 3 )) = qw( a b c ); # \$x = 'a', \$y = 'b', \$z = 'c'. ?

haukex posted "The assignment my (\$x, \$y, \$z) = qw( 1 2 3 ) happens first, i.e. those three variables are assigned the numbers 1 to 3, and this first assignment returns the lvalues, to which the values qw( a b c ) are immediately assigned."

"and this first assignment returns the lvalues" What lvalues does it return? I see (my (\$x, \$y, \$z) = qw( 1 2 3 )) = qw( a b c ); as # 1 = 'a', 2 = 'b', 3 = 'c'.

```#                  | inner assignment with a LHS (l) and RHS (r)
#      llllllllll..v...rrrrrrr                                       # \$x = 1,   \$y = 2,   \$z = 3.
(my (\$x, \$y, \$z) = ( 1, 2, 3 )) = ('a', 'b', 'c' );
#      llllllllll.................^..rrrrrrrrrrrrr                   # \$x = 'a', \$y = 'b', \$z = 'c'.
#                                 | outter assignment with a LHS (l) and RHS (r)
```
Slightly changed the internal scalar semantics by eliminating qw.
Re^2: Not understanding 2 sentences in perldoc
by perlfan (Priest) on Jul 29, 2020 at 21:18 UTC
For my own edificiation, would we expect B::Deparse to have broken this down further? This was my first attempt to decompose it.
```perl -MO=Deparse -e '(my (\$x, \$y, \$z) = qw( 1 2 3 )) = qw( a b c )'
(my(\$x, \$y, \$z) = ('1', '2', '3')) = ('a', 'b', 'c');
-e syntax OK
```

Create A New User
Node Status?
node history
Node Type: note [id://11120010]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others contemplating the Monastery: (9)
As of 2020-09-22 13:50 GMT
Sections?
Information?
Find Nodes?
Leftovers?
Voting Booth?
If at first I don’t succeed, I …

Results (129 votes). Check out past polls.

Notices?