Ted Ashton writes:
: Thus it was written in the epistle of Michael G Schwern,
: > On Sun, Jan 20, 2002 at 10:58:34PM -0800, Larry Wall wrote:
: > > :     while( my $line = <FILE> ) {
: > > :         ...
: > > :     }
: > > 
: > > That still works fine--it's just that $line lives on after the while.
: > 
: > This creeping lexical leakage bothers me.  While it might make the
: > language simpler, the proliferation of left-over lexicals seems
: > sloppy.
: 
: . . . if not to say downright ugly.  The boolean of an if or a while is more a
: part of the "inner stuff" than the "outer".

It doesn't seem that way to me.

: What's the chance that it could be considered so?  

In most other languages, you wouldn't even have the opportunity to put
a declaration into the conditional.  You'd have to say something like:

    my $line = <$in>;
    if $line ne "" { ... }

Since

    if my $line = <$in> { ... }

is Perl shorthand for those two lines, I don't see how one can say that
the variable is more related to the inside than the outside of the block.
One can claim that the code after the C<if> may not be interested in
C<$line>, but the same is true of the block itself!  The conditional
only decides whether the block runs.  It's not part of the block.

Larry

Reply via email to