This my $x if 0 is definitely a bug, because constant folding shouldn't allow a lexical to be declared.
But the OP has a condition which is only checked at run-time, while the declaration happens at compile-time.
This means the new variable will not be overwritten with an init-value if the condition is false.
The deeper issue is that postfix-conditions have no own scope, the problem is non-existent for if ($bool) {my $x = ... }
Not sure if this qualifies as a bug or a weird feature.
But a warning should happen in any case if a declaration happens before a postfix condition, because of the broken symmetry to prefix conditions.
Cheers Rolf
(addicted to the 𐍀𐌴𐍂𐌻 Programming Language :)
Wikisyntax for the Monastery
In reply to Re^4: Conditional initialization of lexical (my) variables
by LanX
in thread Conditional initialization of lexical (my) variables
by muthm
For: | Use: | ||
& | & | ||
< | < | ||
> | > | ||
[ | [ | ||
] | ] |