perl-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Stas Bekman <s...@stason.org>
Subject [patch] shutting down 'constant sub redefined' in Apache::Reload
Date Mon, 26 May 2003 07:46:50 GMT

Currently if you have used a constant sub in your code, Apache::Reload will 
complain every time the code is reloaded. And for a good reason:
http://groups.google.com/groups?threadm=20020519214851.3981.qmail%40airtrout.tregar.com
http://archive.develooper.com/perl5-changes%40perl.org/msg04919.html

However it's a bad thing not being able to shut those warning, if you know 
that you didn't modify the constant subs. The approach suggested by Rafael is 
to use $SIG{__WARN__} override, only for those who know what they are doing:

   PerlSetVar ReloadNoWarningsConstantRedefine on

here is the patch. Not sure if that variable is not too long... may be 
shouldn't use reverse logic but:

   PerlSetVar ReloadWarningsConstantRedefine off

with 'on' being the default.

better name suggestions are welcome as well.

Index: lib/Apache/Reload.pm
===================================================================
RCS file: /home/cvs/modperl-2.0/lib/Apache/Reload.pm,v
retrieving revision 1.10
diff -u -r1.10 Reload.pm
--- lib/Apache/Reload.pm        8 May 2003 00:31:27 -0000       1.10
+++ lib/Apache/Reload.pm        26 May 2003 07:38:31 -0000
@@ -63,6 +63,9 @@

      my $TouchFile = ref($o) && $o->dir_config("ReloadTouchFile");

+    my $NoWarningsConstantRedefine = ref($o) &&
+        (lc($o->dir_config("ReloadNoWarningsConstantRedefine") || '') eq 'on');;
+
      my $TouchModules;

      if ($TouchFile) {
@@ -141,6 +144,8 @@
                  undef %{$symref};
              }
              no warnings FATAL => 'all';
+            local $SIG{__WARN__} = \&skip_redefine_const_sub_warn
+                if $NoWarningsConstantRedefine;
              require $key;
              warn("Apache::Reload: process $$ reloading $key\n")
                      if $DEBUG;
@@ -149,6 +154,11 @@
      }

      return Apache::OK;
+}
+
+sub skip_redefine_const_sub_warn {
+    return if $_[0] =~ /^Constant subroutine [\w:]+ redefined at/;
+    CORE::warn(@_);
  }

  1;


__________________________________________________________________
Stas Bekman            JAm_pH ------> Just Another mod_perl Hacker
http://stason.org/     mod_perl Guide ---> http://perl.apache.org
mailto:stas@stason.org http://use.perl.org http://apacheweek.com
http://modperlbook.org http://apache.org   http://ticketmaster.com


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@perl.apache.org
For additional commands, e-mail: dev-help@perl.apache.org


Mime
View raw message