Assignment inside Perl ternary conditional operator problems,
This snippet of Perl code in my program is giving the wrong result.
$condition ? $a = 2 : $a = 3 ; print $a;
No matter what the value of
$condition is, the output is always 3, how come?
This is explained in the Perl
Because of Perl operator precedence the statement is being parsed as
($condition ? $a= 2 : $a ) = 3 ;
Because the ?: operator produces an assignable result, 3 is assigned to the result of the condition.
When $condition is true this means ($a=2)=3 giving $a=3
When $condition is false this means ($a)=3 giving $a=3
The correct way to write this is
$a = ( $condition ? 2 : 3 ); print $a;
We got bitten by this at work, so I am posting here hoping others will find it useful.
That’s the answer Assignment inside Perl ternary conditional operator problems, Hope this helps those looking for an answer. Then we suggest to do a search for the next question and find the answer only on our site.
The answers provided above are only to be used to guide the learning process. The questions above are open-ended questions, meaning that many answers are not fixed as above. I hope this article can be useful, Thank you