Stories
Slash Boxes
Comments
NOTE: use Perl; is on undef hiatus. You can read content, but you can't post it. More info will be forthcoming forthcomingly.

All the Perl that's Practical to Extract and Report

The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
 Full
 Abbreviated
 Hidden
More | Login | Reply
Loading... please wait.
    • For the most part, the only warning perl issued during runtime for my programs 'Use of uninitialized value ...', which is a pretty lame warning since Perl defines new created variables to be, er, undefined.

    I always use 'perl -w'. I almost always find that 'Use of unitialized value' inicates a mistake that I need to correct. Sure, if you are testing for defined(), then the code can catch this and do something intelligent, but that's not usually the case in my code.

    Most typically, the use of an unitiali

    • Maybe I don't understand what you're getting at or maybe our coding styles are radically different, but I pretty much always want to be warned that I'm using an unitialized value.

      I do 'use strict,' so don't take me for a total slacker. I haven't seen many situations in my code that the 'uninitialize' warning is helpful. With 'use strict' and a -wc check, I can catch typos at compile time. After that, I normally *depend* on values being uninitialized. For instance:

      my $tmp;
      while(<>){
         $tmp .= $_;
      }

      The first time through the loop, $tmp is undef so the concatentation op will generate that infernal warning. I do stuff like that all the time. Sure I could init $tmp to an empty string, but why bother? The language guarantees the behavior I desire.

      I'm also very aware of Perl's notion of truth, so I'm (frequently) careful to check defined() when I can get a false value that I need to inspect. Please post some code where -w at runtime has produced a helpful 'use of uninitialized value' message. I am interested to learn what other Perlers understand that I do not.

      • But -w is smart enough that it doesn't generate "that infernal warning" with .= or += (or |=, for that matter). I think it did in some older versions of Perl.

        Can you give an example of code where the "uninitialized" warning gets in your way?