我想知道,是否-MO=Deparse
向您展示了所有 Perl 优化,为什么不将其折叠到 Perl 5.10 中?
$ perl -MO=Deparse -e'[qw/foo bar baz/]->[0]'
['foo', 'bar', 'baz']->[0];
-e syntax OK
IRC 上的一些人认为这O=Deparse
可能没有显示全部,但它肯定显示了一些不断的折叠。
$ perl -MO=Deparse -e'use constant "foo" => "bar"; foo'
use constant ('foo', 'bar');
'???';
-e syntax OK
如果我显式编写常量 sub,结果相同。constant.pm
虽然可以预测,但其中的文档让您创建一个常量列表而不是一个常量数组也很有趣。我假设这不仅不像标量常量那样折叠,而且它需要在每次调用时创建一个新数组的开销。
$ perl -MO=Deparse -e'use constant foo => qw/foo bar baz/; (foo)[0]'
use constant ('foo', ('foo', 'bar', 'baz'));
(foo)[0];
-e syntax OK
我能得出的唯一结论-MO=Deparse
是显示所有折叠,而常量数组只是没有在 Perl 中优化?是这样吗?有技术原因吗?