Table 4-1 depicts
where the various mod_perl configuration
directives can be used.

Table 4-1. The Scope of mod_perl configuration directives

Directive

Global

<VirtualHost>

<Directory>

PerlTaintCheck

V

PerlWarn

V

PerlFreshRestart

V

PerlPassEnv

V

V

PerlRequire

V

V

V

PerlModule

V

V

V

PerlAddVar

V

V

V

PerlSetEnv

V

V

V

PerlSetVar

V

V

V

PerlSetupEnv

V

V

V

PerlSendHeader

V

V

V

<Perl> Sections

V

V

V

The first column represents directives that can appear in the global
configuration; that is, outside all sections. Note that
PerlTaintCheck, PerlWarn, and
PerlFreshRestart can be placed inside
<VirtualHost>sections. However, because
there's only one Perl interpreter for all virtual
hosts and the main server, setting any of these values in one virtual
host affects all other servers. Therefore, it's
probably a good idea to think of these variables as being allowed
only in the global configuration.

The second column represents directives that can appear inside the
<VirtualHost>sections.

The third column represents directives that can appear in the
<Directory>,
<Location>, and
<Files>sections and all their regex
variants. These mod_perl directives can also appear in
.htaccess files.

For example, PerlWarn cannot be used in
<Directory> and
<VirtualHost>sections. However,
PerlSetEnv can be used anywhere, which allows you
to provide different behavior in different sections:

In this example, a handler invoked from
/bar/manage/ will see the
ADMIN_EMAIL environment variable as
bar@example.com, while other handlers configured
elsewhere will see ADMIN_EMAIL as the default
value, webmaster@example.com.