in reply to Re: Re: Gettin ALL errors with carp module
in thread Gettin ALL errors with carp module

Sorry to beat a dead horse. But the following code works...sorta:
use CGI; BEGIN { use CGI::Carp qw(carpout fatalsToBrowser); open(LOG, ">test") or die("Unable to open test: $!\n"); carpout(LOG); } $query = new CGI; print $query->header; prnt "hello";
OK, so now I'm getting an error in the browser but it's very generic:
Execution of /home/xxxx/xxxx/web/cgi-bin/xx.cgi aborted due to compila +tion errors.
That's it...no line number, no details. Compare this to the "test" log file which is more what I'm looking for:
[Sun May 20 12:04:58 2001] carp.cgi: Unquoted string "prnt" may clash +with future reserved word at /home/xxxxx/xxxx/web/cgi-bin/xx.cgi line + 15. [Sun May 20 12:04:58 2001] xx.cgi: String found where operator expecte +d at /home/xxxxx/xxxx/web/cgi-bin/xx.cgi line 15, near "prnt "hello"" [Sun May 20 12:04:58 2001] carp.cgi: (Do you need to predeclare pr +nt?) syntax error at /home/xxxxx/xxxx/web/cgi-bin/xx.cgi line 15, near "prn +t "hello"" Unmatched right bracket at /home/xxxx/xxxxx/web/cgi-bin/xx.cgi line 16 +, at end of line [Sun May 20 12:04:58 2001] xx.cgi: Execution of /home/xxxxx/xxxx/web/c +gi-bin/xx.cgi aborted due to compilation errors.
How do I get my browser message to look like my log?

$PM = "Perl Monk's";
$MCF = "Most Clueless Friar";
$nysus = $PM . $MCF;

Replies are listed 'Best First'.
Re: Re: Re: Re: Gettin ALL errors with carp module
by chipmunk (Parson) on May 20, 2001 at 20:39 UTC
    The reason you see only the "Execution of ... aborted due to compilation errors" message is that this is the only fatal error being produced. The "String found..." compilation 'error' is actually a severe warning, which is not caught by fatalsToBrowser.

    This is a quirk of how many of Perl's compilation errors are handled. If "... found where ... expected" were a fatal error, then compilation would abort immediately. Making it a severe warning allows compilation to continue, possibly reporting other errors and warnings, before finally failing with the generic compilation errors message. Here's an example:

    if ($x) { prnt "Hello"; } elseif { print "Goodbye" $x = 1; }
    If all compilation errors were fatal, you'd just get: String found where operator expected at tmp.pl line 4, near "prnt "Hello"" But perl actually provides more:
    String found where operator expected at tmp.pl line 4, near "prnt "Hel +lo"" (Do you need to predeclare prnt?) syntax error at tmp.pl line 4, near "prnt "Hello"" elseif should be elsif at tmp.pl line 5. Scalar found where operator expected at tmp.pl line 7, at end of line (Missing semicolon on previous line?) syntax error at tmp.pl line 7, near "$x " tmp.pl had compilation errors.
    This does have its drawbacks, as you've found. However, you should make sure your scripts compile before running them from the browser, which would avoid the problem you are having.
Re: Re: Re: Re: Gettin ALL errors with carp module
by webmaster33 (Initiate) on May 21, 2001 at 06:28 UTC
    I'm also suffering with CGI::Carp, so any info is welcome about it.