I think you have eaten too much Christmas pudding :) You seem to be thinking the following constructs are equivalent:
These constructs are hardly equivalent and there is no ambiguity that needs to be cleaned up, regardless of whether they happen to appear within a conditional.
A lexical declared within an if is not prone to the my $foo if 0 persistency problem, period. Consider the construct
if (my $result = some_func())assuming some_func() is some sort of cyclic iterator that returns a positive number, then 0, then undef, the if branch will be taken only when $result contains a positive number. If $result contains 0 or undef, the conditional will evaluate to false, and the else branch (if any) will be taken instead.
At no point will $result retain its previous contents. Even if it did at a purely implementational level, you're initialising it with a value via the assignment of the results of some_funct(), and so you're safe.
• another intruder with the mooring in the heart of the Perl
In reply to Re: What about if (my $var = foo()) { ... }
by grinder
in thread What about if (my $var = foo()) { ... }
by Limbic~Region
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |