Perl中的正则表达式分组

Mah*_*mam 2 regex perl

我有变量包含: No such file or directory at ./EMSautoInstall.pl line 50.

我想创建变量contains No such file or directory和另一个包含at ./EMSautoInstall.pl line 50.

我的REGEX是: my ( $eStmnt, $lineNO ) = $! =~ /(.*[^a][^t])(.*)/;

当我打印两个变量时,第一个包含No such file or directory但第二个包含空.

为什么会这样?

TLP*_*TLP 7

真的$!变量中有那个字符串吗?因为通常情况下,at line...部件是由die和添加的warn.我怀疑你只是

$! = "No such file or directory";
Run Code Online (Sandbox Code Playgroud)

你的正则表达式匹配,因为它允许空字符串

/(.*[^a][^t])(.*)/
Run Code Online (Sandbox Code Playgroud)

即第二次捕获也不匹配任何东西,第一次捕获可以是任何不结束的东西at.

确认,

print $!;
Run Code Online (Sandbox Code Playgroud)

应该打印No such file or directory.

  • @M_E神秘解决了.:)如果有疑问,`Data :: Dumper`模块是一个很好的调试工具:`print Dumper $ variable`. (2认同)