我正在读perldoc perlre
并注意到这句有点有趣的台词:
o - pretend to optimize your code, but actually introduce bugs
我搜索了文档的其余部分,但没有找到对提到的“错误”的另一种尊重。
有人知道使用 /o 标志有什么错误吗?
我发现这个在perldoc perlfaq6
:
在 5.6 及更高版本中,Perl 不会重新编译正则表达式
如果变量没有改变,那么你可能不需要“/o”
选项。它不疼,但也没有帮助。如果你想要任何
Perl 版本仅编译正则表达式一次,即使
变量发生变化(因此,仅使用其初始值),您仍然
需要“/o”。
您可以观察 Perl 的正则表达式引擎的工作情况来验证
如果 Perl 正在重新编译正则表达式,请您自己进行。 “使用重新
'debug'" pragma(Perl 5.005 及更高版本附带)显示详细信息。
对于 5.6 之前的 Perls,您应该看到“re”报告它
在每次迭代时编译正则表达式。使用 Perl 5.6 或
稍后,您应该只会看到第一次迭代的“重新”报告。
use re 'debug';
my $regex = 'Perl';
foreach ( qw(Perl Java Ruby Python) ) {
print STDERR "-" x 73, "\n";
print STDERR "Trying $_...\n";
print STDERR "\t$_ is good!\n" if m/$regex/;
}
所以拥有 /o 标志“不会有什么坏处”。但“这也没有帮助”。
在我看来,这不完全是一个错误。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)