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 };

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

Reply via email to