A variável $/refere-se à correspondência mais recente, enquanto a variável $¢refere-se à correspondência mais externa mais recente. Nas regexes mais básicas, como a acima, isso pode ser o mesmo. Mas, como pode ser visto na saída do .rakumétodo, os Matchobjetos podem conter outros Matchobjetos (é o que você obtém quando usa $<foo>ou $1para capturas).
Suponhamos que tivéssemos a seguinte expressão regular com uma captura quantificada
/ ab (cd { say $¢.from, " ", $¢.to } ) + /
E executou, veria a seguinte saída se comparássemos com "abcdcdcd":
0 2
0 4
0 6
Mas se mudarmos de usar $¢para $/, obteremos um resultado diferente:
2 2
4 4
6 6
(O motivo pelo qual .toparece um pouco errado é que ele .pos- e - não é atualizado até o final do bloco de captura).
Em outras palavras, $¢irá sempre se referir ao que será seu objeto partida final (ou seja, $final = $text ~~ $regex) para que você possa percorrer um complexo dentro árvore captura do regex exatamente como seria depois de ter terminado o jogo completo Assim, no exemplo acima, você poderia apenas faça $¢[0]para se referir à primeira partida, $¢[1]à segunda, etc.
Dentro de um bloco de código regex, $/fará referência à correspondência mais imediata. No caso acima, essa é a partida para dentro da ( )e não saberá sobre as outras partidas, nem o início original da partida: apenas o começo do ( )bloco. Portanto, dê uma regex mais complexa:
/ a $<foo>=(b $<bar>=(c)+ )+ d /
Podemos acessar a qualquer momento usando $ ¢ todos os footokens dizendo $¢<foo>. Podemos acessar os bartokens de um dado foousando $¢<foo>[0]<bar>. Se inserirmos um bloco de código dentro da foocaptura, ele poderá acessar os bartokens usando $<bar>ou $/<bar>, mas não poderá acessar outros foo.
$/e$¢é o escopo: o último só tem um valor dentro do regex" para significar que$¢era apenas um vestígio vestigial, exatamente comoCursoré. Quando li sua resposta, pensei$¢que seria o que$*TOPeu criei na possível melhoria? seção da minha resposta para a SO "Por que / como é necessária uma variável adicional para combinar caracteres arbitrários repetidos com grupos de captura?". Mas minhas tentativas de substituir$*TOPpor$¢falharam. Você entende meu ponto nessa resposta? Você pode fazer isso funcionar?