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

时间:2010-11-10 05:23:38

标签: regex perl

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

如果我有:

$stringA =~ /regex/;
$stringB =~ m/regex/;

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

感谢。

3 个答案:

答案 0 :(得分:9)

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

 if ($something =~ m!//this/has/a/ton/of//characters/in/it!)

这样做通常会更好,因为它会一次又一次地保存写作\/\/,如果您使用//,则需要执行此操作。

答案 1 :(得分:7)

m/PATTERN//PATTERN/是相同的。

请参阅perlop(perl运算符)联机帮助页的this part。向下滚动到m/PATTERN/上的部分,您会看到它也称为/PATTERN/

答案 2 :(得分:0)

他们是一样的。

  

匹配运算符。在开始分隔符之前,这是“匹配”运算符。它意味着读取=〜左边的字符串表达式,并查看它的任何部分是否与m后面的分隔符中的表达式匹配。请注意,如果分隔符是斜杠(这是正常的事务状态),则m是可选的,通常不包括在内。无论是否存在,它仍然是匹配操作。

Source