On Sun, Jan 20, 2002 at 07:25:17PM -0500, Damian Conway wrote:
> > How would you use an $x lexically scoped to the loop block?
>
> You can't...directly. Nor can a C<while> or C<if>. The new rule is that
> to be lexical to a block it has to be declared in the block, or in the
> block's parameter list.
>
> You'd need to use another layer of braces:
>
> do {
> loop my $x=0; $x < 100; $x++ {
> ...
> }
> }
Hmmm. I understand the desire for lexical simplicity and all, but
this seems like a Great Leap Backwards to 5.003.
{
my $foo;
foreach $foo (@bar) {
...
}
}
The C<foreach @bar -> $foo> is a good out for the common case, and
I'll give that more complicated for loops will be uncommon enough so
having a few block wrappers won't matter. But I'm worried about how
will we replicate the current behavior of the common idiom:
while( my $line = <FILE> ) {
...
}
Will it be:
while <FILE> -> $line {
...
}
or do we have to start wrapping things up?
And then there's this one:
if( my $foo = bar() ) {
...
}
how would that be written?
--
Michael G. Schwern <[EMAIL PROTECTED]> http://www.pobox.com/~schwern/
Perl Quality Assurance <[EMAIL PROTECTED]> Kwalitee Is Job One
It wasn't false, just differently truthful.
-- Abhijit Menon-Sen in <[EMAIL PROTECTED]>