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