perl-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Steve Hay <steve....@uk.radan.com>
Subject Re: [Fwd: Apache::Reload Module]
Date Mon, 16 Jun 2003 08:09:47 GMT
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.

>
>
> 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.

> 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.)

Steve


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


Mime
View raw message