Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl-Sensitive Sunglasses
 
PerlMonks  

Re: 'my' with 'if 0' retains old value

by ikegami (Patriarch)
on Apr 21, 2006 at 03:52 UTC ( [id://544771]=note: print w/replies, xml ) Need Help??


in reply to 'my' with 'if 0' retains old value

Quote diotalevi:

my() has a runtime effect. You *always* (unless you're doing something freakish) want that to happen. The my $var STATEMENT-MODIFIER allows the runtime part of my() to potentially not happen.

In other words,
my $var = ... if/unless/while/for/foreach ...
is wrong and/or buggy. Use
my $var;
$var = ... if/unless/while/for/foreach ...
instead

In this case, replace
my $v2 = -2 if 0;
with
my $v2;
$v2 = -2 if 0;

PS - You post here regularly. You should start heeding "Clean Your Room" in How (Not) To Ask A Question and start indenting your code.

Replies are listed 'Best First'.
Re^2: 'my' with 'if 0' retains old value
by diotalevi (Canon) on Apr 21, 2006 at 05:37 UTC

    You can use Perl::Critic to automatically find such fugly code as well. Neat, eh?

    ⠤⠤ ⠙⠊⠕⠞⠁⠇⠑⠧⠊

Re^2: 'my' with 'if 0' retains old value
by bart (Canon) on Apr 21, 2006 at 15:23 UTC
    my $v2; $v2 = -2 if 0;
    Surely that won't do anything useful. I mean, it'll do the same as
    my $v2;
    Hence: no static variable, no value assigned.

    Anyway:

    my $v2 if 0;
    will create a static variable. But IMO that's a coincidence of the implementation, I wouldn't count on it.
      What if 0 is actually DEBUG? I don't presume to know what the real code is like.

        or what if 0 is actually rand() > .5? Then it's a static variable *some* of the time.

        ⠤⠤ ⠙⠊⠕⠞⠁⠇⠑⠧⠊

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://544771]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others about the Monastery: (5)
As of 2024-04-24 00:18 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found