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 unitialized value in my code is a variable name typo, splitting into a list with fewer elements than I expected, a hash value that I assumed had to be there, etc.

    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.

    • 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

      • 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?
    • I use perl -w but also no warnings 'uninitialized' as I do stuff like:
      my $x = something_that_might_return_undef();
      if ($x eq 'blah') {
           # i know 'blah' ne undef
      }
      and hate:
      if ($x && $x eq 'blah') {}
      • That's a great tip. In Slash (which works on perl 5.005 and up, which doesn't have the warninngs pragma), we have a __WARN__ handler that only warns if the warning doesn't match /Use of uninitialized/ or whatever.

        Yes, it is lame, but IMO, so is the warning itself.
      • I don't get it. Seems like only half the time when I get unitialized warnings it's completely harmless. The rest of the times, something_that_might_return_undef() is returning undef and I'm not expecting it to and I end up propagating an undef down into the code, with it being a problem far from the site of the original crime.