Tripletail

 view release on metacpan or  search on metacpan

lib/Tripletail.pm  view on Meta::CPAN

	}


	my $str = '';
	foreach my $filter (@{$this->{filterlist}}) {
		$str = $filter->print($str);
		$str .= $filter->flush;
	}
	$str = $this->{outputbuff} . $str;

	if( $add_clen )
	{
		my $body = $str;
		$body =~ s/^.*?(?:\r?\n\r?\n|\r\r)//s;
		my $clen = length($body);
		$str = "Content-Length: $clen\r\n" . $str;
	}

	print $str;
}

sub __resetContentFilter {
	my $this = shift;

	delete $this->{printflag};

	foreach my $filter (@{$this->{filterlist}})
	{
		my $sub = $filter->can('reset');
		if( $sub )
		{
			$filter->$sub();
		}
	}
}

sub _cwd
{
	$CWD ||= Cwd::cwd;
}
sub _clearCwd
{
	$CWD = undef;
}

sub _readcmd
{
	my $this = shift;
	my $cmd = shift;
	my $secure_env = $this->_secure_env();
	local(%ENV) = %$secure_env;
	`$cmd`;
}
sub _secure_env
{
	my $this = shift;
	my $uid = $<;
	my ($username, $home);
	if( $^O ne 'MSWin32' )
	{
		$username = getpwuid($uid);
		$home     = (getpwuid($uid))[7];
	}else
	{
		$username = 'anonymous';
		$home     = 'C:/';
	}
	+{
		LANG => 'C',
		PATH => '/bin:/usr/bin',
		USER => $username,
		HOME => $home,
		SHELL => '/bin/sh',
	};
}

sub _isa
{
	my $val  = shift;
	my $type = shift;
	defined($type) or die 'undefined arg:type';
	defined($val)  or return; # false.
	if( defined(ref($val)) )
	{
		return ref($val) eq $type || (blessed($val) && $val->isa($type));
	}else
	{
		local($@);
		local($SIG{__DIE__}) = 'DEFAULT';
		my $ret = eval { $val->isa($type); };
		$@ and print STDERR __PACKAGE__."._isa: $@";
		$ret;
	}
}

__END__

=encoding utf-8

=for stopwords
	YAMASHINA
	Hio
	ACKNOWLEDGEMENTS
	AnnoCPAN
	CPAN
	RT
	AU
	CGI
	FCGI
	fcgi
	FastCGI
	Ki
	Mi
	Gi
	Ti
	Pi
	Ei
	TL
	UTF-8
	Shift_JIS
	EUC-JP
	ISO-2022-JP



( run in 2.797 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )