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