//和m //之间有什么区别吗?

pet*_*ete 5 regex perl

我是Perl的新手,所以这可能是一个非常愚蠢的问题,但我找不到:(

如果我有:

$stringA =~ /regex/;
$stringB =~ m/regex/;
Run Code Online (Sandbox Code Playgroud)

从我的测试,$stringA= $stringB.它们之间有什么区别吗?

谢谢.

小智 9

这是一个简写.您可以省略m使用分隔符的时间//.请注意,您也可以使用其他字符来分隔!,但是您需要使用m:

 if ($something =~ m!//this/has/a/ton/of//characters/in/it!)
Run Code Online (Sandbox Code Playgroud)

这样做通常会更好,因为它会一次又一次地保存书写\/\/,如果你使用的话,你需要这样做//.

  • 在选择自己的分隔符时,不要忘记```和`?`与`m`一起使用时有特殊意义.见[perlop](http://perldoc.perl.org/perlop.html#m/PATTERN/msixpogc). (5认同)

Mat*_*son 7

m/PATTERN/并且/PATTERN/是一样的.

请参阅perlop(perl运算符)联机帮助页的这一部分.向下滚动到该部分m/PATTERN/,你会发现它也被称为/PATTERN/


jor*_*ker 0

他们是一样的。

匹配运算符。位于开始分隔符之前,这是“匹配”运算符。意思是读取=~左边的字符串表达式,看看它的任何部分是否与m后面的分隔符内的表达式匹配。请注意,如果分隔符是斜杠(这是正常情况),则 m 是可选的并且通常不包含在内。不管有没有,它仍然是一个匹配操作。

来源