为什么在启用实验性功能时 pragma 顺序很重要?

Why does the pragma order matter when enabling experimental features?

featuresuse 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 的功能。