Re: RFC 88: Possible problem with shared lexical scope.

[email protected] (Dave Rolsky) Sun, 20 Aug 2000 19:38:32 -0500 (CDT)
Newsgroups perl.perl6.language.errors
Message-ID <[email protected]>
On Sun, 20 Aug 2000, Tony Olekshy wrote:

> That would be nice.  But does this mean that in the following
> case:
> 
> 	try { fragile(); }
> 	catch { my $caught = 1; }
> 	finally { $caught and ... }
> 
> storage for $caught is allocated and initialized to undef at the
> beginning of the *try* block, even though you're not allowed to
> see it there?  Finally has to see it, as undef, even if the catch
> block isn't entered.

If all those pieces were in the same scope I think it would still work
like this (in Perl5-ish code):

{
  try { fragile(); # It must be Italian }
  my $caught;
  catch { $caught = 1; }
  finally { $caught and ... }
}

It's the same as in perl5 with a block:

{
   print $foo;
   my $foo = 1;
}

This is a compile time error because $foo isn't in scope til its declared.


Of course, what I know about the Perl internals fits on the head of a pin
so someone more knowledgeable should feel free to jump in.

-dave

/*==================
www.urth.org
We await the New Sun
==================*/