Variabel $/mengacu pada kecocokan terbaru sedangkan variabel $¢mengacu pada kecocokan terluar terbaru. Di sebagian besar regex dasar seperti di atas, itu mungkin satu dan sama. Tetapi seperti yang dapat dilihat dari output .rakumetode, Matchobjek dapat berisi Matchobjek lain (itulah yang Anda dapatkan ketika Anda menggunakan $<foo>atau $1untuk menangkap).
Misalkan kita memiliki regex berikut dengan tangkapan terukur
/ ab (cd { say $¢.from, " ", $¢.to } ) + /
Dan berlari itu akan melihat output berikut jika kita cocok dengan "abcdcdcd":
0 2
0 4
0 6
Tetapi jika kita berubah dari menggunakan $¢menjadi $/, kita mendapatkan hasil yang berbeda:
2 2
4 4
6 6
(Alasan yang .tokelihatannya agak tidak aktif adalah .pos— dan - tidak diperbarui sampai akhir blok tangkap.)
Dengan kata lain, $¢akan selalu merujuk pada apa yang akan menjadi objek pertandingan terakhir Anda (yaitu, $final = $text ~~ $regex) sehingga Anda dapat melintasi pohon tangkap kompleks di dalam regex persis seperti yang Anda lakukan setelah menyelesaikan pertandingan penuh Jadi dalam contoh di atas, Anda bisa saja lakukan $¢[0]untuk merujuk pada pertandingan pertama, $¢[1]yang kedua, dll.
Di dalam blok kode regex, $/akan merujuk pada kecocokan paling cepat. Dalam kasus di atas, itulah kecocokan untuk di dalam ( )dan tidak akan tahu tentang kecocokan lainnya, atau awal asli pencocokan: hanya awal untuk ( )blok. Jadi berikan regex yang lebih kompleks:
/ a $<foo>=(b $<bar>=(c)+ )+ d /
Kami dapat mengakses di titik mana saja menggunakan $ ¢ semua footoken dengan mengatakan $¢<foo>. Kami dapat mengakses bartoken yang diberikan foodengan menggunakan $¢<foo>[0]<bar>. Jika kami menyisipkan blok kode di dalam footangkapan, ia akan dapat mengakses bartoken dengan menggunakan $<bar>atau $/<bar>, tetapi itu tidak akan dapat mengakses lainnya foo.
$/dan$¢ruang lingkup: yang terakhir hanya memiliki nilai di dalam regex" berarti$¢hanya jejak sisa, sama sepertiCursor. Ketika saya membaca jawaban Anda, saya pikir$¢akan$*TOPsaya buat di A kemungkinan perbaikan? bagian dari jawaban saya kepada SO "Mengapa / bagaimana variabel tambahan diperlukan dalam mencocokkan karakter arbiter berulang dengan kelompok tangkapan?". Tetapi upaya saya untuk mengganti$*TOPdengan$¢gagal. Apakah Anda mengerti maksud saya dalam jawaban itu? Bisakah Anda membuatnya bekerja?