如何仅从`Perl6::Controls`导入`for`



测试用例:

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定义所有新关键字。它忽略在使用行上传递的任何参数。

最新更新