in reply to Re: warn altering a line containting the word 'syntax'
in thread warn altering a line containting the word 'syntax'

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";