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.
require
%INC
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:
@INC
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."
use strict;
use strict qw(...);
no strict qw(...);
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:
constant
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.
To install mod_perl, copy and paste the appropriate command in to your terminal.
cpanm
cpanm mod_perl
CPAN shell
perl -MCPAN -e shell install mod_perl
For more information on module installation, please visit the detailed CPAN module installation guide.