On 5/10/05, Aaron Crane <[EMAIL PROTECTED]> wrote: > Damian Conway writes: > > Just as $42 is a shorthand for $/[42], so too $<whatever> is a > > shorthand for $/<whatever>. > > Isn't $42 a shorthand for $/[41] ? > > I think that having 1-based digit-variables but 0-based array indexes on > $/ is really confusing; mistakes of this sort seem to confirm my view.
Yeah, I'm pretty sure they should be consolidated somehow. Of course we could make $# zero-based. But there are other possibilities: * $/[0] is like $&, the full text of the match * $/[0] is the name of the matching rule, like in P::RD The latter isn't applicable everywhere, but I have to say that it was pretty handy. But I'm not sure I ever used its zeroth position to my advantage, so it would probably be better of a method on $/. The former case is actually quite elegant if we extend it to the new matching semantics. Consider: "foobarbaz" ~~ / (foo (bar)) (baz) / Then: $/[0] eq "foobarbaz"; $/[1] is a match object $/[1][0] eq "foobar" $/[1][1][0] eq "bar" $/[2][0] eq "baz" So now we have the strigification behavior on $/: it just returns its zeroth element. The current meaning of $0 is now consistent and means exactly the same thing it used to. But I'm in the middle of a movie, so I haven't really thought through the rest of it clearly. I think it breaks down somewhat in the presence of quantifiers. Luk