Perl: the Markov chain saw | |
PerlMonks |
Re: Evaluating the condition ($x)by hv (Prior) |
on Aug 26, 2024 at 03:36 UTC ( [id://11161352]=note: print w/replies, xml ) | Need Help?? |
It is best explained using "deparse with extra parentheses":
That's a lot of parens, the important pair is: ($x ? $z = "true" : $z) = "false". The precedence is such that in this case, the ternary expression is $x ? $z = "true" : $z. Let's call the result of that $y. That then forms the left hand side of $y = "false". So when $x is true it assigns "true" to $z, then yields $z as an lvalue to apply the second assignment $z = "false", immediately overwriting the "true". The moral of the story is: put disambiguating parens round all but the simplest expressions in a ternary operator.
In Section
Seekers of Perl Wisdom
|
|