Symbol(3) User Contributed Perl Documentation Symbol(3)NAMEApache::Symbol - Things for symbol things
SYNOPSIS
use Apache::Symbol ();
@ISA = qw(Apache::Symbol);
DESCRIPTION
perlsub/Constant Functions 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.
mandatory warning means there is _no_ 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 PerlFreshRestart on or when Apache::StatINC pulls in
a module that has changed on disk.
You can, however, pull some tricks with XS to avoid this
warning, Apache::Symbol::undef does just that.
ARGUMENTS
"undef_functions" takes two arguments: "skip" and
"only_undef_exports".
"skip" is a regular expression indicating the function
names to skip.
Use the "only_undef_exports" flag to undef only those
functions which are listed in "@EXPORT", "@EXPORT_OK",
"%EXPORT_TAGS", or "@EXPORT_EXTRAS". "@EXPORT_EXTRAS" is
not used by the Exporter, it is only exists to communicate
with "undef_functions".
As a special case, if none of the EXPORT variables are
defined ignore "only_undef_exports". This takes care of
trivial modules that don't use the Exporter.
ARGUMENTS
"undef_functions" takes two arguments: "skip" and
"only_undef_exports".
"skip" is a regular expression indicating the function
names to skip.
Use the "only_undef_exports" flag to undef only those
functions which are listed in "@EXPORT", "@EXPORT_OK",
"%EXPORT_TAGS", or "@EXPORT_EXTRAS". "@EXPORT_EXTRAS" is
not used by the Exporter, it is only exists to communicate
with "undef_functions".
As a special case, if none of the EXPORT variables are
defined ignore "only_undef_exports". This takes care of
trivial modules that don't use the Exporter.
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.
PerlRestartHandler
Apache::Symbol defines a PerlRestartHandler which can
be useful in conjuction with "PerlFreshRestart On" as
it will avoid subroutine redefinition messages. Con
figure like so:
PerlRestartHandler Apache::Symbol
Apache::Registry
By placing the SYNOPSIS bit in you script,
Apache::Registry will undefine subroutines in your
script before it is re-compiled to avoid "subroutine
re-defined" warnings.
Apache::StatINC
See Apache::StatINC's docs.
APACHE_SYMBOL_UNIVERSAL
If this environment variable is true when Symbol.pm is
compiled, it will define UNIVERSAL::undef_functions,
which means all classes will inherit Apache::Sym
bol::undef_functions.
Others
Module such as HTML::Embperl and Apache::ePerl who
compile and script cache scripts ala Apache::Registry
style can use "undef_functions" with this bit of code:
if($package->can('undef_functions')) {
$package->undef_functions;
}
Where "$package" is the name of the package in which
the script is being re-compiled.
SEE ALSOperlsub(1), Devel::Symdump(3)AUTHOR
Doug MacEachern
2000-03-03 perl v5.6.1 Symbol(3)