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

Just for fun I tried this on Ubuntu 8.04/perl 5.8.8, Ubuntu 8.10/perl 5.10.0, and Windows XP/ActiveState perl 5.10.1 and was unable to reproduce the problem. OK, none of those configurations are exactly what you have, but it is more likely that a module is overriding something.
  • Comment on Re: warn altering a line containting the word 'syntax'

Replies are listed 'Best First'.
Re^2: warn altering a line containting the word 'syntax'
by Anonymous Monk on Sep 28, 2009 at 08:52 UTC
    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";