use diagnostics;
warn "row=$row col=$col row->[col]=", $row->[$col], ";\n";
__END__
Use of uninitialized value $row in concatenation (.) or string at - li
+ne 1 (#1)
(W uninitialized) An undefined value was used as if it were alread
+y
defined. It was interpreted as a "" or a 0, but maybe it was a mi
+stake.
To suppress this warning assign a defined value to your variables.
To help you figure out what was undefined, perl will try to tell y
+ou the
name of the variable (if any) that was undefined. In some cases it
+ cannot
do this, so it also tells you what operation you used the undefine
+d value
in. Note, however, that perl optimizes your program and the opera
+tion
displayed in the warning may not necessarily appear literally in y
+our
program. For example, "that $foo" is usually optimized into "that
+ "
. $foo, and the warning will refer to the concatenation (.) operat
+or,
even though there is no . in your program.
Use of uninitialized value $col in concatenation (.) or string at - li
+ne 1 (#1)
Use of uninitialized value $col in array element at - line 1 (#1)
Use of uninitialized value in warn at - line 1 (#1)
row= col= row->[col]=;
diagnostics
$SIG{__WARN__} = \&warn_trap;
$SIG{__DIE__} = \&death_trap;
...
sub warn_trap {
my $warning = $_[0];
if (caller eq $WHOAMI or !splainthis($warning)) {
...
sub splainthis ...
print THITHER "$orig (#$old_diag{$_})\n";
|