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