变量§

参见主要文档 上下文中的$/ 变量

$/ 是匹配变量。在每个例程中创建一个新的变量。它设置为最后一个 正则表达式 匹配的结果,因此通常包含 Match 类型的对象。

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

Grammar.parse 方法还将调用者的 $/ 设置为结果 Match 对象。对于以下代码

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」␤» 

在 6.d 版本之前,您可以使用 $() 快捷方式从 $/ Match 获取 ast 值(如果该值存在),否则获取 Match 对象的字符串化。

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

此(非)特性已在 6.d 版本中弃用。