in reply to Re: How to locate an error in a CGI application
in thread How to locate an error in a CGI application

It's the 9th execution of an eval (not an eval on line 9). For example, the script below would give

Use of uninitialized value in array element at (eval 9) line 4.
#!/usr/bin/perl use warnings; my $code_err = q| my @arr; my $i; $arr[$i] = 0; # line 4 within this code snippet |; my $code_ok = q|my $var = ""|; eval $code_ok for (1..8); eval $code_err; # 9th eval, but line 14 in this script

Unfortunately, I don't think there's an easy, straightforward way to locate the warning based on the info you've got...

Replies are listed 'Best First'.
Re^3: How to locate an error in a CGI application
by moritz (Cardinal) on Aug 16, 2007 at 12:26 UTC
    Thanks for the clarification. Unfortunately I tested it with one eval at line one - not a good idea, of course ;-)

    A possible way to find the error woud be to Carp::confess() on errors, I think that works via a SIG{__DIE__} handler, but I don't know that offhand.

    Update: I just tested it, it doesn't seem to work inside an eval.

Re^3: How to locate an error in a CGI application
by rbi (Monk) on Aug 16, 2007 at 12:29 UTC
    Thanks, at least now I know what to debug in my code.
      Mind you, I'm rather clueless, so take what I say with a ton of salt:

      Try adding a "use Carp;" and an INIT block like "INIT { $SIG{__WARN__ }=sub { carp "Caught it"; } };"

      #!/usr/bin/perl use warnings; use Carp; INIT { $SIG{__WARN__}=sub {carp "gotcha!";}; }; my $code_err = q| my @arr; my $i; $arr[$i] = 0; # line 4 within this code snippet |; my $code_ok = q|my $var = ""|; eval $code_ok for (1..8); eval $code_err; # 9th eval, but line 14 in this script E:\><code> gets me <code>E:\>perl example.pl gotcha! at example.pl line 6 main::__ANON__('Use of uninitialized value in array element at + (eval 9) line 4.\x{a}') calle d at (eval 9) line 4 eval ' my @arr; my $i; $arr[$i] = 0; # line 4 within this code snippet ;' called at example.pl line 17 E:\>type example.pl
      clueless
        Now it says Gotcha! at (eval 9) line 86., referer: http://my.server/cgi-bin/mainscript.cgi?feature=a
        but still don't know what :) Is there a way to print the eval argument ?