找不到动态变量@ * INC

时间:2016-02-12 00:55:13

标签: electron perl6

因此,我一直试图让电子与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\sources\42D84B59BC3C5A414EA59CC2E3BC466BBAF78CDA line 54
  in method instance at C:\rakudo\share\perl6\site\sources\42D84B59BC3C5A414EA59CC2E3BC466BBAF78CDA 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\sources\42D84B59BC3C5A414EA59CC2E3BC466BBAF78CDA line 55
  in submethod initialize at C:\rakudo\share\perl6\site\sources\42D84B59BC3C5A414EA59CC2E3BC466BBAF78CDA line 48
  in method instance at C:\rakudo\share\perl6\site\sources\42D84B59BC3C5A414EA59CC2E3BC466BBAF78CDA line 33
  in block <unit> at test.p6 line 9

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

有没有人成功使用Perl6的电子模块?有没有其他人遇到过这个错误?有一个简单的方法吗?

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

1 个答案:

答案 0 :(得分:5)

$ * REPO是Perl 5

中@INC的6.c替代品

在Perl 5中,@INC变量是Perl查找模块时要搜索的全局路径数组(类似于许多操作系统使用的PATH变量,用于包含操作系统查找时要搜索的路径对于程序)。

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

由于Perl 6模块存储库机制引入了并发模块加载和高级模块选择功能,因此有一个数组对于6.c不合适。

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

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

任何直接提及@*INC的pre 6.c模块都需要更新,而某些尚未获得更新。电子模块就是其中之一 - 直到你提出问题(谢谢!)并且模块的作者回复了fixing it

我不知道任何&#34;官方&#34; $*REPO的设计或最终用户文档。可以通过在freenode IRC频道#perl6-toolchain(logs; join)上询问用户 9 来找到最佳信息。