In Variables§

See primary documentation in context for The $/ variable

$/ is the match variable. A fresh one is created in every routine. It is set to the result of the last Regex match and so usually contains objects of type Match.

'abc 12' ~~ /\w+/;  # sets $/ to a Match object
say $/.Str;         # OUTPUT: «abc␤»

The Grammar.parse method also sets the caller's $/ to the resulting Match object. For the following code:

use XML::Grammar; # zef install XML
XML::Grammar.parse("<p>some text</p>");
say $/;

# OUTPUT: «「<p>some text</p>」
#           root => 「<p>some text</p>」
#            name => 「p」
#            child => 「some text」
#             text => 「some text」
#             textnode => 「some text」
#           element => 「<p>some text</p>」
#            name => 「p」
#            child => 「some text」
#             text => 「some text」
#             textnode => 「some text」␤»

Prior to the 6.d version, you could use $() shortcut to get the ast value from $/ Match if that value is truthy, or the stringification of the Match object otherwise.

'test' ~~ /.../;
# 6.c language only:
say $(); # OUTPUT: «tes␤»;
$/.make: 'McTesty';
say $(); # OUTPUT: «McTesty␤»;

This (non-)feature has been deprecated as of version 6.d.