$_ = ~m [($substr)]g;
我有三个问题:
~m[]
和~m//
之间有什么区别? ()
结果会有所不同?g
是什么意思?答案 0 :(得分:2)
/.../
,m/.../
和m[...]
之间没有区别。指定m
时,可以使用所选的分隔符。 /.../
是标准的,但有时使用其他内容更具可读性。例如,比较
/^http:\/\//
与
m[^http://]
()
是捕获。它们捕获与模式匹配的文本。您可以通过$1
访问捕获的第一个捕获文本,通过$2
访问第二个捕获文本等。在列表上下文中,匹配运算符返回捕获的字符串。
$ perl -E'say for 'abcd' =~ /(.).(.)/;'
a
c
m//g
用于查找所有匹配项。 perlop中记录了m//
。
$ perl -E'say for "abc" =~ /(.)/;'
a
$ perl -E'say for "abc" =~ /(.)/g;'
a
b
c
请注意,$var = ~m[...]
和$var =~ m[...]
非常不同,您确实打算使用后者。 =~
后面跟一个匹配运算符指定匹配运算符匹配的变量。
答案 1 :(得分:1)
~m[]
和~m//
相同,是边界符号。
标量变量$substr
嵌入括号中,这意味着您可以通过打印$1
将匹配的值放入括号中。
g
表示全局匹配。