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

时间:2010-06-29 19:31:03

标签: perl6 rakudo

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

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

Divide by zero
current instr.: '' pc -1 ((unknown file):-1)

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

  rakudo
  |- perl6
  \- scripts
     |- perlbook_02.01
     \- scores

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

#!/home/daotoad/rakudo/perl6

use v6;
say "Hello nurse!";

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

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

有什么想法吗?

更新

我宁愿不安装rakudo,我宁愿只是从build目录运行。这将允许我在我尝试不同的Perl6版本时尽量减少对系统的更改(Rakudo *即将推出)。

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

   $ cd rakudo
   $ perl Configure.pl --gen-parrot
   $ make
     

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

   $ ./perl6 hello.pl

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

  

一旦建成,Rakudo的make install目标将安装Rakudo   和它的库进入了以前的Parrot安装   创造它。在执行此步骤之前,“perl6”可执行文件   由上面make创建的只能从根目录中可靠地运行   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-parrot会将perl6安装到parrot_install目录中。

2 个答案:

答案 0 :(得分:5)

您是否在Rakudo中运行make install

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

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

答案 1 :(得分:3)

为了回应您的更新,我现在更新了自述文件:

http://github.com/rakudo/rakudo/commit/261eb2ae08fee75a0a0e3935ef64c516e8bc2b98

我希望你发现比以前更清楚。如果您仍有改进的余地,请考虑向rakudobug@perl.org提交补丁。