CGI-Out

 view release on metacpan or  search on metacpan

lib/CGI/Wrap.pm  view on Meta::CPAN


# Copyright (c) 1996, David Muir Sharnoff

package CGI::Wrap;
require Exporter;
@ISA = qw(Exporter);
@EXPORT = qw(out dout flushout savequery run);
@EXPORT_OK = qw($out);

$VERSION = 2004.1023;

use strict;

use vars qw($out $mailto $usedby);

my $error = 0;
my @saveA;
my $pwd;
my $zero;
my %e;
my $query;
my $debug = '';

use Cwd;

BEGIN	{
	$out = '';
	@saveA = @ARGV;
	$pwd = getcwd();
	$zero = $0;
	%e = %ENV;

	# idiom.com specific feature:
	$pwd = "$Chroot::has_chrooted$pwd"
		if defined $Chroot::has_chrooted;

	$usedby = join(':',(caller(2))[1,2]);

	if (defined @CGI::Out::EXPORT) {
		require CGI::BigDeath;
		bigdeath('', '', "Cannot combine CGI::Wrap ($usedby) with CGI::Out ($CGI::Out::usedby)",
			\%e, $query, $pwd, $zero, \@saveA, $debug, $mailto);
		exit(1);
	}
}

sub savequery
{
	($query) = (@_);
}

sub debug	
{
	$debug .= join('',@_);
	return '';
}	

sub out	
{
	$out .= join('',@_);
	return '';
}	

sub flushout
{
	$out = '';
}

sub run
{
	my ($func, @args) = @_;

	my $r;
	my @r;
	if (ref $func) {
		if (wantarray) {
			@r = eval { &$func(@args) };
		} else {
			$r = eval { &$func(@args) };
		}
	} else {
		if (wantarray) {
			@r = eval "$func @args";
		} else {
			$r = eval "$func @args";
		}
	}
	if ($@) {
		my $pe = $@;
		my $se = $!;
		require CGI::BigDeath;
		require CGI::Carp;
		bigdeath('see above', $se, $pe, $out, 
			\%e, $query, $pwd, $zero, 
			\@saveA, $debug, $mailto);
	}
	print $out;



( run in 3.090 seconds using v1.01-cache-2.11-cpan-5a3173703d6 )