It's amazing what a night will do. See bottom.

--- Allison Randal <[EMAIL PROTECTED]> wrote:
> On Tue, Feb 26, 2002 at 02:20:48PM -0800, Brent Dax wrote:
> > Austin Hastings:
> > #
> > # Which, then, would you like:
> > #
> > # To implicitly localize $_, losing access to an outer version,
> > # or to have to change between implicit and explicit operations?
> 
> Well, I like the idea of having C<when> and the C<s///> operate on
> the
> same thing. But I don't really want C<when> to either localize or
> clobber $_, I want it to leave the information structure alone.
> That's
> why I'd alias $_ at the C<given> or the C<for>, just like I would
> now.
> 

BTW, C<for> doesn't alias $_ always. That's why things like the example
below are possible. 

> > # for @A {
> > #   for @B -> $x {
> > #     when /a/ { s/x/y/; }
>               s/x/y/;
> > #   }
> > # }
> > #
> > # What should that do?
> 
> Even if we give C<when> aliasing powers, it is still confusing,
> because
> you jump back and forth between the $_ within the C<when> block and
> the
> $_ between C<when> blocks.

Hmm. Suppose we force C<when> to alias $_, but give the coder one
chance to "save" the value:

for @A {
  for @B -> $x {
    when /a/ $_ -> $a { s/a/b/; ... $a ...; }
  }
}

Once we get inside the curlies, $_ is aliased to the localized var for
the C<when> (in this case, $x).

And if you've been sufficiently verbose elsewhere,

for @A -> $y {
  for @B -> $x {
    when /a/ { s/a/b/; ... $y ... ; }
  }
}

there's no need.

=Austin

__________________________________________________
Do You Yahoo!?
Yahoo! Greetings - Send FREE e-cards for every occasion!
http://greetings.yahoo.com

Reply via email to