类似于 @+
,%+
哈希允许访问命名捕获缓冲区(如果存在),这些缓冲区位于当前活动动态作用域中的最后一次成功匹配中。(参见 "正则表达式变量的作用域规则")。
例如,$+{foo}
等同于以下匹配后的 $1
'foo' =~ /(?<foo>foo)/;
%+
哈希的键仅列出已捕获(因此与已定义值相关联)的缓冲区的名称。
如果多个不同的捕获组具有相同的名称,则 $+{NAME}
将引用匹配中最左侧的已定义组。
%+
的底层行为由 Tie::Hash::NamedCapture 模块提供。
注意:%-
和 %+
是与最后一个成功正则表达式关联的公共内部哈希的绑定视图。因此,通过 each
对它们进行迭代访问可能会产生不可预测的结果。同样,如果最后一个成功匹配发生变化,则结果可能出乎意料。
此变量在 Perl v5.10.0 中添加。%{^CAPTURE}
别名在 5.25.7 中添加。
此变量是只读的,其值是动态作用域的。