I already updated my post to say that you are probably right, but I'll say it again, straighter to the point: B::Deparse seems to confirm your interpretation as if (1) {BLOCK} is turned into do {BLOCK} (with BLOCK empty in rsFalse's example), and if (0) {} is turned into 0. So in the first case the if is optimized to return the value of the block, and in the second case the value of the EXPR.
++ to you obviously :)
In reply to Re^2: printing unitialized value of the 'do BLOCK'
by Eily
in thread printing unitialized value of the 'do BLOCK'
by rsFalse
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |