=head1 NAME Apache::Symbol - Things for symbol things =head1 Synopsis use Apache::Symbol (); @ISA = qw(Apache::Symbol); =head1 Description C helps mod_perl users avoid Perl warnings related with redefined constant functions. C says: If you redefine a subroutine which was eligible for inlining you'll get a mandatory warning. (You can use this warning to tell whether or not a particular subroutine is considered constant.) The warning is considered severe enough not to be optional because previously compiled invocations of the function will still be using the old value of the function. I means there is B way to avoid this warning no matter what tricks you pull in Perl. This is bogus for us mod_perl users when restarting the server with C on or when C pulls in a module that has changed on disk. You can, however, pull some tricks with XS to avoid this warning, C does just that. =head1 Arguments C takes two arguments: C and C. C is a regular expression indicating the function names to skip. Use the C flag to undef only those functions which are listed in C<@EXPORT>, C<@EXPORT_OK>, C<%EXPORT_TAGS>, or C<@EXPORT_EXTRAS>. C<@EXPORT_EXTRAS> is not used by the Exporter, it is only exists to communicate with C. As a special case, if none of the C variables are defined ignore C. This takes care of trivial modules that don't use the Exporter. =head1 Players This module and the undefining of functions is optional, if you wish to have this functionality enabled, there are one or more switches you need to know about. =over 4 =item PerlRestartHandler C defines a C which can be useful in conjuction with C as it will avoid subroutine redefinition messages. Configure like so: PerlRestartHandler Apache::Symbol =item Apache::Registry By placing the I bit in you script, C will undefine subroutines in your script before it is re-compiled to avoid "subroutine re-defined" warnings. =item Apache::StatINC See C's docs. =item APACHE_SYMBOL_UNIVERSAL If this environment variable is true when Symbol.pm is compiled, it will define C, which means all classes will inherit B. =item Others Modules such as C and C which compile and script cache scripts ala C style can use C with this bit of code: if($package->can('undef_functions')) { $package->undef_functions; } Where C<$package> is the name of the package in which the script is being re-compiled. =back =head1 See Also perlsub, C =head1 Maintainers Maintainer is the person(s) you should contact with updates, corrections and patches. =over =item * The L =back =head1 Authors =over =item * Doug MacEachern =back Only the major authors are listed above. For contributors see the Changes file. =cut