/.../和之间有什么区别m/.../?
use strict;
use warnings;
my $str = "This is a testing for modifier";
if ($str =~ /This/i) { print "Modifier...\n"; }
if ($str =~ m/This/i) { print "W/O Modifier...\n"; }
Run Code Online (Sandbox Code Playgroud)
但是,我查了一下这个网站的参考资料并没有清楚地理解这个理论
Sob*_*que 11
没有区别.如果你只是供应,/PATTERN/那么它假定m.但是,如果您使用的是替代分隔符,则需要提供m.例如,m|PATTERN|不会起作用|PATTERN|.
在您的示例中,i修饰符是在模式之后.m是操作.(相对于s,tr,y等等)
也许有点令人困惑 - 你可以m用作修饰语,但只有在比赛结束后你才能使用.
m/PATTERN/m将导致^和$匹配不同于in m/PATTERN/,但它m是执行此操作的尾随,而不是前导.
Perl有许多类似报价的运算符,您可以在其中选择分隔符以适合您传递给运算符的数据.
q(...) 创建单引号字符串qq(...) 创建一个双引号字符串qw(...) 通过在白色空间上分割其参数来创建列表qx(...) 执行命令并返回输出qr(...) 编译正则表达式m(...) 将其参数与正则表达式匹配(也有,s(...)(...)但我已经把它从列表中删除,因为它有两个参数)
对于其中一些,如果选择默认分隔符,则可以省略运算符开头的字母.
q如果使用单引号字符('...'),则可以省略.qq如果使用双引号字符("..."),则可以省略.qx如果使用反引号(`...`),则可以省略.m如果使用斜杠(/.../),则可以省略.因此,要回答原始问题,m/.../并且/.../是相同的,但因为斜杠是匹配运算符的默认分隔符,所以可以省略m.