On Jan 23, 2008 10:29 PM, Rob Dixon <[EMAIL PROTECTED]> wrote:
> Chas. Owens wrote:
>  >
> > On Jan 23, 2008 10:07 PM, Rob Dixon <[EMAIL PROTECTED]> wrote:
>  >>
> >> Along these lines, can someone explain to me why
> >>
> >>    use strict 'vars';
> >>    my $name = 'data';
> >>    print foreach  @$name;
> >>
> >> produces no error, when
> >>
> >>    use strict 'vars';
> >>    print foreach  @data;
> >>
> >> does?
> >
> > Because use strict 'vars' runs in the compile phase and the symbolic
> > reference is not resolved until the run phase.
>
> Of course. Thanks Chas. I think the docs could do with a tweak here.
snip

They seem fine to me:

from perldoc strict
       "strict refs"
             This generates a runtime error if you use symbolic references
snip
       "strict vars"
             This generates a compile-time error if you access a variable that
             wasn't declared via "our" or "use vars", localized via "my()", or
             wasn't fully qualified.
snip
       "strict subs"
             This disables the poetry optimization, generating a compile-time
             error if you try to use a bareword identifier that's not a sub-
             routine, unless it is a simple identifier (no colons) and that it
             appears in curly braces or on the left hand side of the "=>" sym-
             bol.

The effects and when they happen is fairly clearly spelled out.
Humorously enough,

use strict subs;

violates itself, but it can't catch the error (since it occurred
before $^H was set).

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/


Reply via email to