找不到动态变量@*INC

Dynamic variable @*INC not found

所以我一直在尝试让 Electron 与 Perl6 一起工作,看起来在我为使它们工作而付出的所有努力之后,它只是不想做它的事情。我使用了以下脚本(git 上电子回购的示例之一):

#!/usr/bin/env perl6

use v6;

use Electron;

my $app = Electron::App.instance;
LEAVE {
  $app.destroy if $app.defined;
}

say Electron::Dialog.show-open-dialog.perl;

say Electron::Dialog.show-save-dialog.perl;

say Electron::Dialog.show-message-box.perl;

Electron::Dialog.show-error-box("Text", "Content");

prompt("Press any key to exit");

在 运行 我得到这个错误:

Dynamic variable @*INC not found
  in submethod initialize at C:\rakudo\share\perl6\site\sourcesD84B59BC3C5A414EA59CC2E3BC466BBAF78CDA line 54
  in method instance at C:\rakudo\share\perl6\site\sourcesD84B59BC3C5A414EA59CC2E3BC466BBAF78CDA line 33
  in block <unit> at test.p6 line 9

Actually thrown at:
  in method throw at C:\rakudo/share/perl6/runtime/CORE.setting.moarvm line 1
  in block  at C:\rakudo\share\perl6\site\sourcesD84B59BC3C5A414EA59CC2E3BC466BBAF78CDA line 55
  in submethod initialize at C:\rakudo\share\perl6\site\sourcesD84B59BC3C5A414EA59CC2E3BC466BBAF78CDA line 48
  in method instance at C:\rakudo\share\perl6\site\sourcesD84B59BC3C5A414EA59CC2E3BC466BBAF78CDA line 33
  in block <unit> at test.p6 line 9

在查看子方法后,我注意到这是 perl6 电子模块的一部分,它似乎不喜欢在模块中使用 @*INC

有没有人成功地使用 Perl6 的 electron 模块?还有其他人遇到过这个错误吗?有没有简单的解决方法?

我可能可以修改模块以使其编译 运行 但我不知道从哪里开始替换 @*INC

$*REPO 是 Perl 5 中 @INC 的 6.c 替代品

在 Perl 5 中,@INC 变量是 Perl 查找模块时要搜索的全局路径数组(类似于许多 OSes 使用的 PATH 变量,用于包含要访问的路径当 OS 正在寻找程序时被搜索)。

直到最近 Perl 6 才有相应的 @*INC 变量。

鉴于 Perl 6 模块存储库机制引入的并发模块加载和高级模块选择功能,事实证明为此设置一个数组不适合 6.c。

大约在 6.c 前一两个月,首席开发人员(Stefan Seifert 又名九)将模块加载切换为通过新的 $*REPO 标量使用链式回购方法并废弃了包含数组。

出于各种原因,他们在没有弃用期的情况下这样做。

任何直接提到 @*INC 的 6.c 之前的模块都需要更新,有些还没有得到更新。 Electron 模块就是这样一个——直到您提出问题(谢谢!)并且模块的作者通过 fixing it.

回复

我不知道 $*REPO 有任何“官方”设计或最终用户文档。在 freenode IRC 频道#perl6-toolchain (logs; join).

上询问用户 nine 可能会找到最好的信息。