因此,我一直试图让电子与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
。
答案 0 :(得分:5)
在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 来找到最佳信息。