[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Omaha.pm] silly warnings



On Jan 15, 2009, at 1:18 PM, Dan Linder wrote:
From this site URL: http://www.xav.com/perl/lib/Pod/perllexwarn.html
Looks like I need to wrapper line 55 like this:

55            } else {
56                ($value, $parm)=split(/\s+/,$line,2);
                  no warnings qw(uninitialized);
57                $myhash1{$section_name}{$parm} = $value;
                  use warnings qw(uninitialized);
58            }

Line 57 has 4 moving parts, any of which will throw a warning if things aren't kosher.

- Is %myhash1 guaranteed to be defined?
- Is $section_name guaranteed to be defined?
- Is $parm guaranteed to be defined?
- Is $value guaranteed to be defined?

If not, and you care, then you'd need to add code to guarantee that those values are defined once line 57 happens.

Also, it looks like "no warnings" only effects the block you're in, so you can safely omit the "use warnings" line. It'll get put back automatically, as I demo below. :)

Cheers,

j



$ cat j.pl
use warnings;
$x = 10;
for (1..1) {
   no warnings;
   $y = 10;
}
$z = 10;

$ perl j.pl
Name "main::z" used only once: possible typo at j.pl line 8.
Name "main::x" used only once: possible typo at j.pl line 3.