in reply to Re: What about if (my $var = foo()) { ... }
in thread What about if (my $var = foo()) { ... }

grinder,
No, I assure you I know they are different and completely understand why postfix is wrong. Please read my response to dragonchild. My questions are specific to this construct.

The reason we don't do:

if (some_func()) { my $val = some_func(); }
Is because some_func may change return values in subsequent invocations. The reason why we don't do:
my $val = some_func(); if ($val) { # ... }
Is because we want $val scoped as small as possible.

This only works because of the implicit scoping in perl 5 which is going away in perl 6 (at least in for blocks). I am wondering if there is an alternative way of writing this that accomplishes both things.

Cheers - L~R

Replies are listed 'Best First'.
Re^3: What about if (my $var = foo()) { ... }
by Cyrnus (Monk) on Dec 29, 2007 at 16:24 UTC
    if you want to avoid:
    if (my $val = some_func()) { # ... }
    and keep as small a scope as possible, how about:
    { my $val = some_func(); if ($val) { # ... } }


    John