我有变量包含:./EMSautoInstall.pl 第 50 行没有这样的文件或目录。
我想创建一个包含No such file or directory
的变量,另一个包含at ./EMSautoInstall.pl line 50.
我的正则表达式是:我的 ( $eStmnt, $lineNO ) = $! =~/(.*[^a][^t])(.*)/;
当我打印两个变量时,第一个包含No such file or directory
但第二个是空的。
为什么会这样?
最佳答案
您真的在 $!
变量中有那个字符串吗?因为通常情况下,at line...
部分是由die
和warn
添加的。我怀疑你只是有
$! = "No such file or directory";
你的正则表达式匹配,因为它允许空字符串
/(.*[^a][^t])(.*)/
即第二个捕获也什么都不匹配,第一个捕获可以是任何不以 at
结尾的内容。
确认,
print $!;
应该打印No such file or directory
。
关于regex - Perl 中的正则表达式分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18317796/