为什么在启用实验性功能时 pragma 顺序很重要?
Why does the pragma order matter when enabling experimental features?
features
和 use version
的顺序是否重要?
use feature 'signatures';
use v5.026;
对比
use v5.026;
use feature 'signatures';
上面会产生错误,
Global symbol requires explicit package name
在
use feature 'signatures';
use v5.026;
sub foo ($opt1, $opt2 = undef) {
say $opt1 if $opt2;
}
该版本的 use v5.026
声明 implicitly enables the feature bundle,在这种情况下,它等同于 no feature ':all'; use feature ':5.26'
。这将覆盖您已经 enabled/disabled 的功能。
features
和 use version
的顺序是否重要?
use feature 'signatures';
use v5.026;
对比
use v5.026;
use feature 'signatures';
上面会产生错误,
Global symbol requires explicit package name
在
use feature 'signatures';
use v5.026;
sub foo ($opt1, $opt2 = undef) {
say $opt1 if $opt2;
}
该版本的 use v5.026
声明 implicitly enables the feature bundle,在这种情况下,它等同于 no feature ':all'; use feature ':5.26'
。这将覆盖您已经 enabled/disabled 的功能。