in reply to A cleaner way of scoping variables

  1. If it's short, use the trailing if ...
    my $bar = "true" if $foo;
  2. If it's short and you have two options, use the trinary operator ...
    my $bar = $foo ? "Winner!!!" : "Please play again.";
  3. If it's a longer block, it doesn't matter if you have one declaration line at the front. You can even use default values if you want.
    my ( $foo, $bar, $baz, $wumpus ); # or # my ( $foo, $bar, $baz, $wumpus ) = ( 5555, "Blossom Garden Rd", "San + Jose, CA", 95123 ); if ( $tiddly_rump ) { $foo .... $bar .... $baz .... $wumpus .... }
    That's not so bad, is it?

--
TTTATCGGTCGTTATATAGATGTTTGCA

Replies are listed 'Best First'.
Re^2: A cleaner way of scoping variables
by ysth (Canon) on Aug 10, 2004 at 01:43 UTC
    If it's short, use the trailing if ...
    my $bar = "true" if $foo;
    Nooooooooooooooooo!

    grep 5.8.1+ perlsyn for 'Here be dragons'.

      So greppeth perlsyn:

      NOTE: The behaviour of a my statement modified with a statement modifier conditional or loop construct (e.g. my $x if ...) is undefined. The value of the my variable may be undef, any previously assigned value, or possibly anything else. Don't rely on it. Future versions of perl might do something different from the version of perl you try it out on. Here be dragons.