gozer 2004/09/09 15:16:39 Modified: src/docs/2.0/api/Apache Reload.pod src/docs/2.0/api/ModPerl Util.pod Log: Added ModPerl::Util::unload_package() to remove a loaded package as thoroughly as possible by clearing it's stash. Revision Changes Path 1.13 +0 -25 modperl-docs/src/docs/2.0/api/Apache/Reload.pod Index: Reload.pod =================================================================== RCS file: /home/cvs/modperl-docs/src/docs/2.0/api/Apache/Reload.pod,v retrieving revision 1.12 retrieving revision 1.13 diff -u -r1.12 -r1.13 --- Reload.pod 9 Sep 2004 18:43:45 -0000 1.12 +++ Reload.pod 9 Sep 2004 22:16:39 -0000 1.13 @@ -19,7 +19,6 @@ PerlSetVar ReloadAll Off PerlSetVar ReloadModules "ModPerl::* Apache::*" #PerlSetVar ReloadDebug On - #PerlSetVar ReloadConstantRedefineWarnings Off # Reload a single module from within itself: package My::Apache::Module; @@ -197,30 +196,6 @@ reloaded, are actually getting reloaded, turn the debug mode on: PerlSetVar ReloadDebug On - -=head1 Silencing 'Constant subroutine ... redefined at' Warnings - -If a module defines constants, e.g.: - - use constant PI => 3.14; - -and gets re-loaded, Perl issues a mandatory warnings which can't be -silenced by conventional means (since Perl 5.8.0). This is because -constants are inlined at compile time, so if there are other modules -that are using constants from this module, but weren't reloaded they -will see different values. Hence the warning is mandatory. However -chances are that most of the time you won't modify the constant -subroutine and you don't want I<error_log> to be cluttered with -(hopefully) irrelevant warnings. In such cases, if you haven't -modified the constant subroutine, or you know what you are doing, you -can tell C<Apache::Reload> to shut those for you (it overrides -C<$SIG{__WARN__}> to accomplish that): - - PerlSetVar ReloadConstantRedefineWarnings Off - -For the reasons explained above this option is turned on by default. - -since: mod_perl 1.99_10 =head1 Caveats 1.11 +34 -0 modperl-docs/src/docs/2.0/api/ModPerl/Util.pod Index: Util.pod =================================================================== RCS file: /home/cvs/modperl-docs/src/docs/2.0/api/ModPerl/Util.pod,v retrieving revision 1.10 retrieving revision 1.11 diff -u -r1.10 -r1.11 --- Util.pod 25 Aug 2004 21:51:27 -0000 1.10 +++ Util.pod 9 Sep 2004 22:16:39 -0000 1.11 @@ -17,6 +17,9 @@ # untaint a string (do not use it! see the doc) ModPerl::Util::untaint($string); + + # removes a module as best as it can + ModPerl::Util::unload_module($module); @@ -153,6 +156,37 @@ Do not use this function unless you know what you are doing. To learn how to properly untaint variables refer to the I<perlsec> manpage. + + + + + +=head2 C<unload_module> + +Unloads a module from the current perl interpreter in the safest +way possible. + + ModPerl::Util::unload_module($module); + +=over 4 + +=item arg1: C<$module> (scalar) + +The name of the module to unload + +=item ret: no return value + +=item since 1.99_17 + +=back + +Unloading a module from Perl is a complicated business. This function +tries very hard to do the right thing. After calling this module, it +should be safe to C<use> a new version of the module. + +References to module elements (function, variables, etc) that were taken +from outside the unloaded module will still be valid. +
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]