我是Perl的新手,所以这可能是一个非常愚蠢的问题,但我找不到:(
如果我有:
$stringA =~ /regex/;
$stringB =~ m/regex/;
在我的测试中,$stringA
= $stringB
。它们之间有什么区别吗?
感谢。
答案 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是可选的,通常不包括在内。无论是否存在,它仍然是匹配操作。