On Fri, Apr 21, 2006 at 01:12:35PM -0400, Uri Guttman wrote:
> >>>>> "a" == autrijus <[EMAIL PROTECTED]> writes:
>
> a> * S05: Oops, turns out I entirely read perlop.pod incorrectly;
> a> "it matches once only" means "it matches successfully once only",
> a> not "it performs the match once only". Sorry, TimToady++'s
> a> original example of:
>
> a> (state $x) ||= / pattern /;
>
> a> was correct.
>
> a> +To reset the pattern, simply say C<$x = 0>.
>
> i did a fresh read of S05 due to all the recent activity (i will post
> some edits and questions soonish), but that example baffles me. how does
> it emulate the (never used by me) // of p5? my take would be that the rx
> would be or-assigned to $x and it would remain set through repeated
> calls to the outer sub (assuming a sub). what is the context that makes
> it match against $_ vs returning an rx.
According to S05, "a /.../ matches immediately in a value context
(void, Boolean, string, or numeric)" and since
(state $x) ||= / pattern /;
is very much the same as
state $x; $x = $x || /pattern/;
I'd say that's a "boolean context" and thus matches against $_ instead
of assigning the Regex object to $x.
-Scott
--
Jonathan Scott Duff
[EMAIL PROTECTED]