in reply to Quantum Weirdness and the Increment Operator
Fun.
The reason that using your preInc() sub changes the result is because the value it returns is a copy of $m's value at the end of the call to the sub.
By contrast, the value of $m used by the + operator in the non-sub statement is the value of $m at the point after both the subexpressions involved in the + operation have been evaluated.
I assume that the order of the evaluation is a result of converting the expressions to their reverse polish form. Clear as mud, but this is (roughly) equivalent
$m=20; $r = \$m; print ${ $$r += 1; $r } + ${ my $t=$$r; $$r += 1; \$t }; 43
At least, it produces the same result and is close enough for my mental processes to get a notional handle on the mechanism.
|
---|
In Section
Meditations