Since Perl handlers need to perform the same basic tasks as their C
counterparts, mod_perl exposes the Apache API through a mod_perl API,
which is a set of Perl functions and objects. When a Perl handler
calls such a function or method, mod_perl translates it into the
appropriate Apache C function.
Perl handlers extract the last drop of performance from the Apache
server. Unlike mod_cgi and Apache::Registry, they
are not restricted to the content generation phase and can be tied to
any phase in the request loop. You can create your own custom
authentication by writing a PerlAuthenHandler, or
you can write specialized logging code in a
PerlLogHandler.
Handlers are not compatible with the CGI specification. Instead, they
use the mod_perl API directly for every aspect of request processing.
mod_perl provides access to the Apache API for Perl handlers via an
extensive collection of methods and variables exported by the Apache
core. This includes methods for dealing with the request (such as
retrieving headers or posted content), setting up the response (such
as sending HTTP headers and providing access to configuration
information derived from the server's configuration
file), and a slew of other methods providing access to most of
Apache's rich feature set.
Using the mod_perl API is not limited to mod_perl handlers.
Apache::Registryscripts can also call API
methods, at the price of forgoing CGI compatibility.
We suggest that you refer to the book Writing Apache
Modules with Perl and C, by Lincoln Stein and Doug
MacEachern (O'Reilly), if you want to learn more
about API methods.