Ken Fox wrote:
>> / $x := (gr\w+) / vs / (gr\w+) { let $x = $1 } /
>>
>>Shouldn't they both use C< := > ?
They should. The second version is a typo. It should be:
/ (gr\w+) { let $x := $1 } /
> Depends on what you want. The "$x :=" in the rule binds the
> first match to $x -- it does not copy the value. The "$x ="
> in the code block copies the value of the first match. You
> can use either binding or assignment in the code block.
But not with the C<let> keyword. That requires binding.
> Both of them will be "undone" during backtracking. It's more
> efficient to bind, but the copy guarantees changes to $x and $1
> are independent.
This is not what Larry has said previously. He said that only
binding can be used with C<let> variables and that only C<let>
variable assignments are undone on backtracking.
Damian