是否有特殊变量%+的名称?

时间:2014-02-12 19:16:32

标签: perl perlop

我想知道%+是否有运营商名称,而不是代码如下:

/(?<CaptureName>\w+)/;
...
my $whatever=$+{CaptureName};

我可以使用更具可读性的东西:

use English;

/(?<CaptureName>\w+)/;
...
my $whatever=$?????{CaptureName};

3 个答案:

答案 0 :(得分:7)

使用English模块,您可以将其称为%LAST_PAREN_MATCH

use English;

/(?<CaptureName>\w+)/;
...
my $whatever = $LAST_PAREN_MATCH{CaptureName};

答案 1 :(得分:6)

perldoc -v %+

   %LAST_PAREN_MATCH
   %+      Similar to "@+", the "%+" hash allows access to the named capture buffers,
           should they exist, in the last successful match in the currently active
           dynamic scope.

答案 2 :(得分:6)

您可以参考http://perldoc.perl.org/perlvar.html以后查找符号名称。

在您的情况下,sylbe称为LAST_PAREN_MATCH

%LAST_PAREN_MATCH
%+
Similar to @+ , the %+ hash allows access to the named capture buffers, should they exist, in the last successful match in the currently active dynamic scope.

例如,$ + {foo}相当于以下

后的$ 1

我唯一的注意事项是文档中包含以下内容:

This variable was added in Perl v5.10.0.

因此,如果您使用较旧的翻译,则可能会导致问题。

注意正如Keith在下面的评论中指出的那样,您也可以使用perldoc -v '$+'。只有符号在您安装的Perl版本上可用时才有效。