这是一个非常基本的问题,但我找不到任何适当的文档来解释此行为。
("Johnson" =~ /son/ )返回true,但(/son/ =~ "Johnson")返回false。确切原因是什么?当操作数互换时,为什么=〜运算符的行为会有所不同?
直出口文档:
最简单的正则表达式只是一个单词,或更一般而言,是一个字符串。由单词组成的正则表达式与包含该单词的任何字符串匹配:
"Hello World" =~ /World/; # matches
Run Code Online (Sandbox Code Playgroud)
这是Perl声明的全部内容吗?
"Hello World"是一个简单的双引号字符串。World是正则表达式,并且//括起来/World/告诉Perl在字符串中搜索匹配项。运算符=~将字符串与regexp匹配相关联,如果regexp匹配,则生成true值;如果regexp不匹配,则生成 false。在我们的例子中,World匹配中的第二个单词"Hello World",因此表达式为true。
请阅读http://perldoc.perl.org/perlretut.html
现在在您的示例中"Johnson" =~ /son/匹配,因为=~在LHS(Johnson)中找到的(是儿子)的RHS 。如果/son/ =~ "Johnson"在LHS(儿子)中找不到RHS(约翰逊)。