in reply to Re^2: scope of variables in a sub
in thread scope of variables in a sub

Assignment in an if is fine if you're doing:

if ( my $var = something() ) { # use $var here }

(Ditto while.)

But if $var has a wider scope, it's probably a bad idea.

Replies are listed 'Best First'.
Re^4: scope of variables in a sub
by GrandFather (Saint) on Sep 24, 2020 at 21:04 UTC

    Even then there are two major issues to my mind:

    1. The clutter around the assignment hides the assignment making it harder to see where the variable gets its value
    2. It is easy to confuse = and == so using the assignment operator in a conditional expression makes code harder to maintain

    Point 2 is seen as sufficient of an issue that many compilers generate warnings for assignment in conditional expressions. I love the way that Perl allows terse functional chords that allow the equivalent of many lines of code in other languages to be wrapped up in a single compact statement. But playing tricks with side effects just to save a line of code doesn't sit well with me.

    I'm completely fine with the equivalent assignment in a while statement though - go figure.

    Optimising for fewest key strokes only makes sense transmitting to Pluto or beyond