Steve Hay wrote:
Hi Stas,

Stas Bekman wrote:

Steve Hay wrote:
[...]

If you try the version in the 2.0 package it already includes all the changes that you ask for. However it won't work with 1.0 as is, since it deploys the 2.0 API.




Unless I'm missing something, this doesn't seem to be the case. I've just downloaded the latest mp2 and checked it out. It doesn't have a "UndefOnReload" option or any equivalent thereof (and it doesn't automatically do what that option would do all the time either).



IMHO, you don't need this option. Apache::Reload does it automatically:


no warnings 'redefine';
require $file;


It actually overkills it with "no warnings FATAL => 'all';", but this is irrelevant anyway -- "use warnings" / "no warnings" are lexically scoped. The line "require $file" doesn't generate any warnings within that lexical scope, so turning warnings off there doesn't achieve anything. The "redefine" warnings come from the lexical scope of the file that it being reloaded.

True.


If your module, afterwards does:

use warnings;

it's a problem of your module.


This is what all of my modules do, at least while under development -- which is also the scenario in which I want to make use of Apache::Reload! I don't see this as a "problem" of my module -- it's what I always do, and is recommended by various venerable sources.

I do the same.


Simple replace it with:

  use warnings;
  no warnings 'redefine';

Does this work for you? Or do you think that it's better to do an explicit symbols undef?


Yes, of course, this works for me, but I don't want to turn any warnings off. Supposing my module accidentally does redefine a subroutine? Maybe I'm mucking about with two different versions of a subroutine, and have accidentally left them both active. I'd like to know about that! It also wouldn't work for anyone running under "perl -W", which overrides all other means of disabling warnings.

I would therefore prefer to have an explicit symbols undef done. I don't necessarily want an *option* for it, though -- I'd be happy if it *always* did that. Would you ever want to see those redefine warnings? If so, then maybe have an "UndefOnReload" option that defaults to "On", and users can turn it "Off" if they wish -- like your "ReloadConstantRedefineWarnings" option. (Presumably you would consolidate both of these things into one single option.)

You are correct.


Since we are talking about undef-ing only CODE refs, the option should have a good mnemonic, "UndefOnReload" doesn't imply subs. So I suggest to have

ReloadSubRedefineWarnings off

with default being 'on' - no action taken. Or ReloadSubroutineRedefineWarnings.

Can you adjust the original patch to use Symbol and not Apache::Symbol, so we can re-use the same code in mp1 and mp2? mp2 doesn't carry Apache::Symbol.

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


--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]



Reply via email to