CGI-Debug
view release on metacpan or search on metacpan
package CGI::Debug;
use strict;
use vars qw( $VERSION $Module $File_base $Control $Reference
$Content_type $Body_length $Done $DEBUG $Started);
$VERSION = '1.00';
sub BEGIN
{
$DEBUG = 0; # <-- DEBUG
print "Content-Type: text/plain\n\n" if $DEBUG >2; # DEBUG
$Module = __PACKAGE__;
sub import_error
{
my( $error, $paramsref ) = @_;
print "Content-Type: text/html\n\n";
print "<html><head><title>$Module response</title></head><body>";
print "<p>You got an error!\n";
if( ref $paramsref and eval{ require "Data/Dumper.pm" } )
{
print "<pre>\n", Data::Dumper::Dumper( $paramsref ), "</pre>\n\n";
}
print "<p>$error\n";
print "</body></html>\n";
# Set error flag, for not go into END
# This avoid a perl core dump under 5.005_02
$Done = 1;
}
unless( eval{ require 5.004_05 } )
{
&import_error("You must at least have perl v 5.004_05 to use $Module");
}
if( exists $ENV{'GATEWAY_INTERFACE'} and
$ENV{'GATEWAY_INTERFACE'} =~ /^CGI-Perl/
)
{
my $modfile = $Module;
$modfile =~ s/::/\//g;
my($i,$p,$filename)=0;
while( ($p,$filename) = caller(++$i) )
{
last unless $filename =~ /\/$modfile\.pm$/;
}
warn "$filename: $Module can't be used under mod_perl\n";
return;
}
unless( eval{ require 'CGI.pm' } )
{
&import_error("You must have the CGI module to use $Module");
}
$CGI::NO_DEBUG = 1; #Do not use STDIN debugging!
if( eval{ require 'Time/HiRes.pm' } )
{
import Time::HiRes 'time';
$Started = Time::HiRes::time();
}
else
{
$Started = $^T;
}
$Control = {};
$File_base = "/tmp/$Module";
$File_base =~ s/::/-/g;
# Redirect STDERR to a temporary file
unless( $DEBUG > 1 )
{
open(OLDERR, ">&STDERR"); # Save real STDERR
open (STDERR,">${File_base}-error-$$")
or &import_error( "Could not write to file ${File_base}-error-$$: $!\n" );
}
$/ ||= "\n"; # Bug in perl 5.005_02 !!!
}
END
{
return if $Done; # This avoids a perl core dump under 5.005_02
&cleanup;
}
sub CHECK
{
return if $Done; # This avoids a perl core dump under 5.005_02
if( -s "$File_base-error-$$" )
{
&cleanup;
$Done=1;
}
}
sub import
( run in 1.100 second using v1.01-cache-2.11-cpan-75ffa21a3d4 )