> Dan Muey wrote:
> > Howdy all.
> > 
> > I have the need to turn off strict refs for one line.
> > I want to make sure strict refs is back on afterward.
> > 
> > if(...) {
> >     no strict 'refs';
> >     ...use refs here...
> >     use strict 'refs';
> > }
> > 
> > Is that how I turn them back on or ???
> > (I think all 'use's get done before anything else so it would be 
> > pointless to have it there? )
> 
> You can turn it back on like that. "use" happens at 
> compile-time, but strict checking also happens at 
> compile-time, so it all works out correctly (with some help 
> from the magcial behavior of the special $^H variable).
> 
> > 
> > Or does the no strict 'refs' apply only within it's own 
> block so after 
> > I'm out of that if{} statement strict refs are back on?
> 
> Yes, that's true as well. (It's documented under perldoc 
> perlvar, search for
> $^H)
> 
> Sometimes you want to localize the action to just the 
> right-side of an assignment. For example:
> 
>   use strict;
>   our $bar = 1;
>   my $ref = 'bar';
>   my $foo = $$ref;       # error: symbolic reference
> 
> You can do that with:
> 
>    my $foo = do { no strict 'refs'; $$ref };
> 
Ooohh cool. Thanks for the info, I'll tuck that way under my hat also!

Thanks

Dan

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

Reply via email to