Beefy Boxes and Bandwidth Generously Provided by pair Networks
We don't bite newbies here... much

Re: Why Perl boolean expression sometimes treated as lvalue?

by Athanasius (Chancellor)
on Feb 08, 2013 at 12:24 UTC ( #1017805=note: print w/replies, xml ) Need Help??

in reply to Why Perl boolean expression sometimes treated as lvalue?

In Perl, arguments are passed by reference, not by value. This is what perlsub means when it says: “The array @_ is a local array, but its elements are aliases for the actual scalar parameters.”

The subroutine call a($x && $y) causes the Perl interpreter to evaluate the boolean expression $x && $y to determine which variable is to be aliased. If $x is false, the expression short-circuits, so a reference to $x is passed in to the sub; but if $x is true, short-circuiting does not occur, and so it is a reference to $y that is passed in to the sub.

So it is misleading to say that the boolean expression works as an l-value. Within sub a, the boolean expression is never seen — only the reference to either $x or $y — and it is this reference which works as an l-value.

I haven’t found anything in the documentation to explain the process by which Perl derives a reference (“alias”) from a complex expression given as an argument to a subroutine. It might be useful to know — but, in general, it’s safer and clearer to keep things simple and just pass a variable or a value.

Hope that helps,

Athanasius <°(((><contra mundum Iustus alius egestas vitae, eros Piratica,

Replies are listed 'Best First'.
Re^2: Why Perl boolean expression sometimes treated as lvalue? (perlop, precedence)
by Anonymous Monk on Feb 08, 2013 at 12:37 UTC

    perlop perlop perlop , precedence is everything :)

    $ perl -E " print ( 1 && 2 ) 2 $ perl -E " sub ff { ++$_[0] } my($f,$a)=(1,5); ff( $f && $a ); say $f +; say $a; " 1 6

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1017805]
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others having an uproarious good time at the Monastery: (5)
As of 2018-05-25 04:10 GMT
Find Nodes?
    Voting Booth?