# if EXPR is false $foo will still have the last set value for this scope's (but not other scope's) $foo my $foo if EXPR; #same here if EXPR is false the first time it's tested on this pass. my $bar while EXPR;