NAME
ModPerl::Util - Helper mod_perl Functions
Synopsis
use ModPerl::Util;
# e.g. PerlResponseHandler
$callback = Apache::current_callback;
# exit w/o killing the interpreter
ModPerl::Util::exit();
# untaint a string (do not use it! see the doc)
ModPerl::Util::untaint($string);
Description
ModPerl::Util
provides mod_perl utilities API.
API
ModPerl::Util
provides the following functions and/or methods:
current_callback
Returns the currently running callback name, e.g. 'PerlResponseHandler'
.
$callback = Apache::current_callback();
exit
Terminate the request, but not the current process (or not the current Perl interpreter with threaded mpms).
ModPerl::Util::exit($status);
- opt arg1:
$status
( integer ) -
The exit status, which as of this writing is ignored. (it's accepted to be compatible with the core
exit
function.) - ret: no return value
- since: 1.99_14
Normally you will use the plain exit()
in your code. You don't need to use ModPerl::Util::exit
explicitly, since mod_perl overrides exit()
by setting CORE::GLOBAL::exit
to ModPerl::Util::exit
. Only if you redefine CORE::GLOBAL::exit
once mod_perl is running, you may want to use this function.
The original exit()
is still available via CORE::exit()
.
ModPerl::Util::exit
is implemented as a special die()
call, therefore if you call it inside eval BLOCK
or eval "STRING"
, while an exception is being thrown, it is caught by eval
. For example:
exit;
print "Still running";
will not print anything. But:
eval {
exit;
}
print "Still running";
will print Still running. So you either need to check whether the exception is specific to exit
and call exit()
again:
use ModPerl::Const -compile => 'EXIT';
eval {
exit;
}
exit if $@ && ref $@ eq 'APR::Error' && $@ == ModPerl::EXIT;
print "Still running";
or use CORE::exit()
:
eval {
CORE::exit;
}
print "Still running";
and nothing will be printed. The problem with the latter is the current process (or a Perl Interpreter) will be killed; something that you really want to avoid under mod_perl.
untaint
Untaint the variable, by turning its tainted SV flag off (used internally).
ModPerl::Util::untaint($tainted_var);
Do not use this function unless you know what you are doing. To learn how to properly untaint variables refer to the perlsec manpage.
See Also
Copyright
mod_perl 2.0 and its core modules are copyrighted under The Apache Software License, Version 2.0.