---
name: "Apache::StatINC"
section: "3pm"
platform: "linux"
package: "libapache-mod-perl"
version: "1.29.0.4-4.1+etch1"
release: "Debian 4.0 (Etch)"
platforms: ["linux"]
url: "https://new.carta.tech/Apache::StatINC"
---

# Apache::StatINC(3pm)

Reload %INC files when updated on disk

## 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)](/perlstyle/1.md) 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.
