Beefy Boxes and Bandwidth Generously Provided by pair Networks
Welcome to the Monastery
 
PerlMonks  

Re^2: Announcing Perl-Critic-0.14

by holli (Monsignor)
on Jan 30, 2006 at 16:23 UTC ( #526478=note: print w/ replies, xml ) Need Help??


in reply to Re: Announcing Perl-Critic-0.14
in thread Announcing Perl-Critic-0.14

Please forgive my ignorance, but what's wrong with it? $foo ends up as 1 when $bar is true and is undefined when $bar is false. Just as I expect it to be. (Active Perl 5.8.7)

use warnings; use strict; my $t_bar = 1; my $t_foo = 1 if $t_bar; my $f_bar = 0; my $f_foo = 1 if $f_bar; print "true $t_foo false $f_foo"; #->true 1 false #->Use of uninitialized value in concatenation (.) or string ...


holli, /regexed monk/


Comment on Re^2: Announcing Perl-Critic-0.14
Download Code
Re^3: Announcing Perl-Critic-0.14
by bart (Canon) on Jan 30, 2006 at 16:47 UTC
    Please forgive my ignorance, but what's wrong with it? $foo ends up as 1 when $bar is true and is undefined when $bar is false. Just as I expect it to be. (Active Perl 5.8.7)
    Wrong. This piece of code is one of the weird things in perl, in this case, something that is sometimes used as a dirty trick, to create a static variable.
    #!/usr/bin/perl -lw print $]; for (1 .. 5) { my $i = 123 if $bar; print ++$i; }
    Result:
    Name "main::bar" used only once: possible typo at test.pl line 4. 5.008003 1 2 3 4 5
      Conclusion: Always assign something in a my declaration?

      The following works as expected.
      my $i = $bar ? 123 : undef;
      And yeah, that's really weird.


      holli, /regexed monk/

        Conclusion: Always assign something in a my declaration?

        More precisely: make sure an assignment with a my on the left-hand side is never conditional.

        Makeshifts last the longest.

        Always assign something in a my declaration?
        I think it boils down to: Never modify a lexical unless the my() was executed during the current execution of the enclosing block.

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others about the Monastery: (16)
As of 2014-07-14 16:56 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    When choosing user names for websites, I prefer to use:








    Results (268 votes), past polls