ModPerl::Util - Helper mod_perl Functions


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();
ret: $callback ( string )
since: 1.99_12

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);
arg1: $tainted_var (scalar)
ret: no return value
$tainted_var is untainted.

since: 1.99_12

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

mod_perl 2.0 documentation.


Copyright

mod_perl 2.0 and its core modules are copyrighted under The Apache Software License, Version 2.0.


Authors

The mod_perl development team and numerous contributors.

 ModPerl::Util - Helper mod_perl Functions