gpt4 book ai didi

Perl CORE::say与-E

转载 作者:行者123 更新时间:2023-12-04 03:25:42 24 4
gpt4 key购买 nike

this answer中,perl一线式的用法如下:

perl -we '... CORE::say "x=$x"'

使用 -eCORE::say代替较短的 -E和plain say有什么优势,例如:
perl -wE '... say "x=$x"'

最佳答案

引入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,该程序的行为将不会改变。具体来说,以下在5.24中输出 120:
perl -e'sub fc { my $acc=1; $acc*=$_ for 2..$_[0]; $acc } CORE::say fc(5);'

关于Perl CORE::say与-E,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43685330/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com