in reply to dying in the wrong place while using CGI::Carp
Here is my initial theory:
Update: See my update at the bottom of this post. I think it's more on the mark.
Your admin may have removed the definition of the CGI::Carp error handling routine that is assigned via CGI::Carp::set_message();
Here's an example. The following code executes properly if you uncomment the "carp_error" sub's definition. But we are looking for what might cause an error within the Carp module. So leave the error-handling sub commented out...:
use strict; use warnings; use CGI::Pretty; use CGI::Carp qw( fatalsToBrowser ); BEGIN { # sub carp_error { # my $error_message = shift; # my $cq = new CGI; # print $cq->start_html( "Error" ), # $cq->h1("Error"), # $cq->p( "Sorry, the following error has occurred: " ), # $cq->p( $cq->i( $error_message ) ), # $cq->end_html; # } CGI::Carp::set_message( \&carp_error ); } die $!;
If you call CGI::Carp::set_message(), passing it a reference to a nonexistant error-handling subroutine, you won't know there's a problem until the main script dies for some reason. And then, CGI::Carp tries to call that error-handling routine. And when the call fails because there is no routine, guess what?....
Content-type: text/html Undefined subroutine &main::carp_error called at C:/Perl/lib/CGI/Carp. +pm line 45 6.
Yup, the error message hails back to the Carp module.
Start by trying to figure out if there is a call to CGI::Carp::set_message(), and no definition of the error routine.
Update: I looked into the source on CGI::Carp. Line 301 is part of the sub import() definition. So whatever it is that your script is doing, it's causing an error to ripple into the import() method of CGI::Carp. merlyn (in the CB) had a brilliant suggestion (most of his are). ...make sure that you have a semicolon after use CGI::Carp;. Without one, it's possible that Perl is seeing the next line of code (up to the next semicolon) as an export list, causing the error you're seeing deep inside the CGI::Carp module.
use strict; might catch such an error earlier on by noticing a bareword.
Dave
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Re: dying in the wrong place while using CGI::Carp
by esharris (Monk) on Dec 24, 2003 at 14:08 UTC | |
by davido (Cardinal) on Dec 24, 2003 at 21:18 UTC | |
by esharris (Monk) on Dec 24, 2003 at 22:02 UTC | |
by davido (Cardinal) on Dec 25, 2003 at 16:45 UTC |