作者:被撑死的猫。。。 | 来源:互联网 | 2023-02-05 12:35
1> ikegami..:
feature.pm是为了允许向后兼容的功能添加到Perl而引入的.-E
启用所有向后不兼容的功能,这意味着-E
如果升级,使用的程序可能会中断perl
.
perl -E'... say "foo"; ...' # Forward-incompatible (5.10+)
perl -Mfeature=say -e'... say "foo"; ...' # ok (5.10+)
perl -Mv5.10 -e'... say "foo"; ...' # ok (5.10+)
perl -M5.010 -e'... say "foo"; ...' # ok (5.10+)
perl -e'... CORE::say "foo"; ...' # ok (5.16+)
例如,假设您在2010年编写了以下程序:
perl -E'sub fc { my $acc=1; $acc*=$_ for 2..$_[0]; $acc } say fc(5);'
使用2010年最新的Perl(5.12),该程序输出如下:
120
使用2016年最新的Perl(5.24),该程序输出如下:
5
差异是由于在5.16中添加了一个功能,在启用时会改变该程序的含义.如果一个人避免使用-E
,程序的行为就不会改变.具体而言,120
5.24中的以下输出:
perl -e'sub fc { my $acc=1; $acc*=$_ for 2..$_[0]; $acc } CORE::say fc(5);'