当我尝试使用Rakudo运行脚本时,为什么会出现"除以零"错误?

dao*_*oad 4 rakudo perl6 raku

我刚刚建立了Rakudo和Parrot,以便我可以玩它并开始学习Perl 6.我下载了Perl 6书并愉快地输入了第一个演示程序(网球锦标赛示例).

当我尝试运行该程序时,出现错误:

Divide by zero
current instr.: '' pc -1 ((unknown file):-1)
Run Code Online (Sandbox Code Playgroud)

perl6在构建目录中有我的二进制文件.我在rakudo构建目录下添加了一个脚本目录:

  rakudo
  |- perl6
  \- scripts
     |- perlbook_02.01
     \- scores
Run Code Online (Sandbox Code Playgroud)

如果我尝试从我的脚本目录运行一个简单的hello world脚本,我会得到同样的错误:

#!/home/daotoad/rakudo/perl6

use v6;
say "Hello nurse!";
Run Code Online (Sandbox Code Playgroud)

但是,如果我从rakudo它运行的目录运行它.

听起来我需要设置一些环境变量,但我不知道给它们的是什么和什么值.

有什么想法吗?

更新:

我宁愿不安装rakudo,我宁愿只是从build目录运行.这将允许我在我尝试不同的Perl6版本时(Rakudo*即将推出)将我对系统的更改保持在最低限度.

README文件鼓励我认为这是可能的:

   $ cd rakudo
   $ perl Configure.pl --gen-parrot
   $ make
Run Code Online (Sandbox Code Playgroud)

这将在当前(rakudo)目录中创建"perl6"或"perl6.exe"可执行文件.然后可以使用如下命令从构建目录运行程序:

   $ ./perl6 hello.pl
Run Code Online (Sandbox Code Playgroud)

在重新阅读时,我发现了一个事实,即在构建目录之外运行脚本之前必须安装rakudo:

一旦构建,Rakudo的make install目标将把Rakudo及其库安装到用于创建它的Parrot安装中.在执行此步骤之前,make上面创建的"perl6"可执行文件只能从Rakudo的构建目录的根目录中可靠地运行.make install执行完后,可以从任何目录运行已安装的可执行文件(只要用于创建它的Parrot安装保持不变).

所以看起来我需要安装rakudo来玩Perl 6.

接下来的问题是,安装rakudo的地方?README说用于构建的Parrot安装.

--gen-parrot在我的构建中使用了该选项,它看起来像是安装的rakudo/parrot-install.所以rakudo会安装到我的rakudo\parrot-install

阅读Makefile,支持这个结论.我跑了make install,它确实安装了parrot_install.

这部分构建/安装过程对于Perl6的新手来说还不清楚.我会看看我是否可以使用文档补丁来澄清事情.

脱离我的头顶:

  1. make install在构建之外运行脚本之前强调运行.这个要求目前埋藏在一个段落的中间,很容易被浏览文档的人遗漏(我).

  2. 明确说明将使用--gen-parrotperl6安装到parrot_install目录中.

mor*_*itz 5

make install在Rakudo 跑了吗?

有必要这样做才能在其构建目录之外使用Rakudo(这就是为什么README和http://rakudo.org/how-to-get-rakudo告诉你这样做的原因.

不用担心,默认安装位置是本地的(在rakudo目录中的parrot_install/bin/perl中).