I may be missing your point, but based on my somewhat
fuzzy understanding:

> Oh. Duh. Why don't we have such a mechanism for matches?
>
>     m/ my $date := <date> /
>
> is ambiguous to the eyes.  But I think it's necessary to have a
lexical
> scoping mechanism for matches

The above would at least have to be:

    m/ { my $date := <date> } /

(otherwise the 'my ' and ':=' would be matched literally.)

And you can of course do that.

But you won't be able to access $date outside the closure.

Hence the introduction of let:

    m/ { let $date := <date> } /

which makes (a symbol table like entry for) $date available
somewhere via the match object.

And has the additional effect that $date (I think the whole
variable/entry, but at the very least its value) disappears
if the match backtracks over the closure.

Right?

--
ralph

Reply via email to