这是一个非常基本的问题,但我无法找到解释此行为的任何适当文档。Perl匹配运算符=〜
("Johnson" =~ /son/)
返回true,但(/son/ =~ "Johnson")
返回false。确切的原因是什么?当操作数互换时,为什么=〜运算符的行为不同?
这是一个非常基本的问题,但我无法找到解释此行为的任何适当文档。Perl匹配运算符=〜
("Johnson" =~ /son/)
返回true,但(/son/ =~ "Johnson")
返回false。确切的原因是什么?当操作数互换时,为什么=〜运算符的行为不同?
STRAIGHT OUTTA DOCS:
最简单的正则表达式是一个简单的词,或更一般地,的 字符的字符串。由字的正则表达式匹配任何字符串, 包含字:
"Hello World" =~ /World/; # matches
这是什么Perl的说法一回事呢?
"Hello World"
是一个简单的双引号字符串。World
是 的正则表达式和//
包含/World/
告诉Perl到 搜索字符串进行匹配。 运算符=~
将字符串 与正则表达式匹配关联,并在正则表达式匹配, 时生成真值,如果正则表达式不匹配则返回false。在我们的例子中,World
与"Hello World"
中的 第二个字匹配,所以表达式是正确的。
请仔细阅读http://perldoc.perl.org/perlretut.html
现在在你的榜样"Johnson" =~ /son/
因为RHS =~
比赛(这是儿子)在LHS(约翰逊)被发现。如果是/son/ =~ "Johnson"
RHS(Johnson)在LHS(儿子)中找不到。
呃...因为=〜运算符将一个标量表达式绑定到模式匹配。
因此它说明了需要给出参数的顺序。你的第二个(/son/ =~ "Johnson")
使用约翰逊作为模式...并且一个没有被击中,因此是错误的。
见结合操作符:https://users.cs.cf.ac.uk/Dave.Marshall/PERL/node87.html
在我发现使用Google http://www-cgi.cs.cmu.edu/afs/cs/user/rgs/mosaic/pl-exp-op.html的文档中提到了它。为什么没有为你工作? – PeeHaa
http://learn.perl.org –
相关:http://perldoc.perl.org/perlop.html#Binding-Operators – Theraot