|
|
Apache::StatINC - Reload %INC files when updated on disk
#httpd.conf or some such #can be any Perl*Handler PerlInitHandler Apache::StatINC
When Perl pulls a file via require
, it stores the filename in the
global hash %INC
. The next time Perl tries to require
the same
file, it sees the file in %INC
and does not reload from disk. This
module's handler iterates over %INC
and reloads the file if it has
changed on disk.
Note that StatINC operates on the current context of @INC
.
Which means, when called as a Perl*Handler it will not see @INC
paths
added or removed by Apache::Registry scripts, as the value of @INC
is
saved on server startup and restored to that value after each request.
In other words, if you want StatINC to work with modules that live in custom
@INC
paths, you should modify @INC
when the server is started.
Besides, 'use lib' in startup scripts, you can also set the PERL5LIB
variable in the httpd's environment to include any non-standard 'lib'
directories that you choose. For example, you might use a
script called 'start_httpd' to start apache, and include a line like this:
PERL5LIB=/usr/local/foo/myperllibs; export PERL5LIB
When you have problems with modules not being reloaded, please refer to the following lines in 'perlmodlib':
``Always use -w. Try to use strict;
(or use strict qw(...);
).
Remember that you can add no strict qw(...);
to individual blocks
of code that need less strictness. Always use -w. Always use -w!
Follow the guidelines in the perlstyle(1)
manual.''
Warnings when running under mod_perl is enabled with 'PerlWarn On' in your httpd.conf.
It will most likely help you to find the problem. Really.
Normally, StatINC will turn of warnings to avoid ``Subroutine redefined''
warnings when it reloads a file. However, this does not disable the
Perl mandatory warning when re-defining constant
subroutines
(see perldoc perlsub). With this option On, StatINC will invoke the
Apache::Symbol undef_functions method to avoid these mandatory
warnings:
PerlSetVar StatINC_UndefOnReload On
You can make StatINC tell when it reloads a module by setting this option to on.
PerlSetVar StatINC_Debug 1
The only used debug level is currently 1.
mod_perl(3)
Currently maintained by Ask Bjoern Hansen <ask@netcetera.dk>. Written by Doug MacEachern.