以下Perl正则表达式修饰符有什么作用?
/o
例如,
$string =~ /foo\(\"([^\)]*)\"\)/o)
/o
是什么意思?
答案 0 :(得分:6)
它告诉Perl只编译一次表达式。请参阅 What is /o really for? 。
答案 1 :(得分:5)
正则表达式的/ o选项(在perlop和perlreref中记录)告诉Perl只编译一次正则表达式。这仅在模式包含变量时才有用。如果模式没有改变,Perls 5.6及更高版本会自动处理它。
(source)
答案 2 :(得分:5)
绝对没有!
它会影响插值,并且没有任何内容插入到该模式中。
如果有内插的话,/ o会导致插值只发生一次,无论执行匹配运算符多少次。
>perl -E"for (['o','foo'],['a','bar'],['e','neo']) {
my ($pat, $s) = @$_; say $s =~ /$pat/ ? $& : 0 }"
o
a
e
>perl -E"for (['o','foo'],['a','bar'],['e','neo']) {
my ($pat, $s) = @$_; say $s =~ /$pat/o ? $& : 0 }"
o
0
o