作为链接到州的文档,
m/abc/; # a regex that is immediately matched against $_
rx/abc/; # a Regex object
/abc/; # a Regex object
[...]
之间的差异示例
m/ /
和
/ /
操作员:
my $match;
$_ = "abc";
$match = m/.+/; say $match; say $match.^name; # OUTPUT: «「abcï½£â¤Matchâ¤Â»
$match = /.+/; say $match; say $match.^name; # OUTPUT: «/.+/â¤Regexâ¤Â»
所以
/.../
返回a
Regex
对象,该对象可以作为值传递,并用于以后多次匹配,以及
m/.../
返回a
Match
立即执行匹配的对象。当您打印
火柴
对象,则得到匹配的结果,并且在打印
正则表达式
对象,则得到正则表达式的文本表示。使用
m//
在Perl 6中,您可以访问隐式
火柴
对象
$/
:
匹配结果存储在
$/
变量和也从匹配中返回。结果为类型
火柴
如果比赛成功;否则就是
Nil
.
这种区别与Python的类似
re.compile
vs。
re.match
/
re.search
,Perl 5中也存在类似的区别,您可以使用
qr/.../
vs。
m//
和
/.../
用于直接匹配。正如@raiph指出的,并非所有
m//
和
/.../
导致直接匹配。相反地
Perl 5 precompiles literal (static) regexes
即使没有明确要求。(据推测,Perl 6也会执行此优化。)