Philippe M. Chiasson > mod_perl-1.31 > Apache::StatINC

Download:
mod_perl-1.31.tar.gz

Dependencies

Annotate this POD

Related Modules

Apache::Reload
Apache::Registry
Apache::DBI
CGI::Ajax
HTML::Template
Apache::Constants
IO::Socket
CGI::Minimal
Apache::GTopLimit
Time::localtime
more...
By perlmonks.org

CPAN RT

New  15
Open  6
View/Report Bugs
Module Version: 1.07   Source  

NAME ^

Apache::StatINC - Reload %INC files when updated on disk

SYNOPSIS ^

  #httpd.conf or some such
  #can be any Perl*Handler
  PerlInitHandler Apache::StatINC

DESCRIPTION ^

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.

OPTIONS ^

StatINC_UndefOnReload

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
StatINC_Debug

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.

SEE ALSO ^

mod_perl(3)

AUTHOR ^

Currently maintained by Ask Bjoern Hansen <ask@netcetera.dk>. Written by Doug MacEachern.

syntax highlighting: