Perl m //运算符莫名其妙地无法匹配简单的正则表达式

Ful*_*pin 3 regex perl pcre

今天,在编写正则表达式以匹配提示输出以便通过IPC :: RUN与程序交互时,我遇到了一个无法解释的匹配简单正则表达式的失败.

$ perl -E 'say "OK" if "mbox user@testdomain.it> " =~ /mbox\s+.*@.*> /s'
$
$ perl -E 'say "OK" if "mbox user@testdomain.it> " =~ /mbox\s+.*@t.*> /s'
OK
$
Run Code Online (Sandbox Code Playgroud)

我认为这可能是插入«@»作为印记的问题,但是

$ perl -E 'say "OK" if "mbox user@testdomain.it> " =~ /mbox\s+.*\@.*> /s'
$
Run Code Online (Sandbox Code Playgroud)

这很简单,我似乎无法理解问题所在.

在Ubuntu 10.4上Perl版本是5.10.1

有任何想法吗?

提前致谢

Ed *_*ess 7

我认为你在正确的轨道上,但看着在错误的地方插值.

考虑一下@你的字符串而不是你的正则表达式会发生什么.