测试用例:
use 5.026;
use Perl6::Controls qw(for);
for (1..10) -> $n {
say $n;
}
loop {};
预期:
在没有包或对象引用的情况下无法调用方法"循环">
得到:
无限循环
use Perl6::Controls qw(for);
BEGIN {
delete $^H{'Keyword::Simple/keywords'}{"loop"};
}
...
我无意中通过B::Deparse
运行了您的脚本。
要选择要保留的关键字,可以说
use Perl6::Controls;
BEGIN {
my @keep = ...; # e.g. @keep = qw(for);
my %keywords;
@keywords{@keep} = @{$^H{'Keyword::Simple/keywords'}}{@keep};
$^H{'Keyword::Simple/keywords'} = %keywords;
}
你不能。查看Perl6::Controls的源代码,它使用自己的导入方法使用Keyword::Declare定义所有新关键字。它忽略在使用行上传递的任何参数。