punch_card_don has asked for the wisdom of the Perl Monks concerning the following question:
It's the darndest thing - my script uses the DBI to retrieve some data from a MYSQL database then output it into a Template::Toolkit template. Among other things, these lines are included at the top of the script to give me useful debugging info:
And everything runs hunky-dory. Script runs to completion just fine, no error messages output to the browser. So I'm done developing, time to turn off the error messages, so I comment out:use warnings; # load modules use CGI; use CGI::Carp qw(fatalsToBrowser); use DBI; use Template; use HTML::Entities; # error output BEGIN { use CGI::Carp qw(carpout); carpout(STDOUT); }
And it hangs. Just sits there 'til the browser times out. Comment back in, runs just fine again.# BEGIN { # use CGI::Carp qw(carpout); # carpout(STDOUT); # }
What the hey?
Forget that fear of gravity,
Get a little savagery in your life.
UPDATE: Problem Solved
Many thanks to philcrow and ikegami - using their various suggestions, the script now runs just fine with carpout commented out. Here's how I applied their info:
Via telnet, used the "Script" unix command to start script logging into a text file
Then ran the perl script successfully by passing all the parameters neededscript debug.txt;
Stop the script loggerREMOTE_USER=username perl myscript.pl param_1=x param_2=y param_3=z;
This has the excellent result of outptting everything - error messages and html output - to the debug.txt file for review.exit;
I found a few things, including a sub-routine that was present in two separate places (this script "includes" several others), and a whole whack of lines using undeclared variables in if-statements. Cleaning it all up magically made it run.