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 )