Я только что построил 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 на этом этапе, я бы предпочел просто запускать вещи из каталога сборки. Это позволит мне сохранить минимальные изменения в моей системе, поскольку я пробую разные сборки 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.
Следующий вопрос, а где установить ракудо? README сообщает об установке Parrot, использованной для сборки.
Я использовал опцию --gen-parrot
в своей сборке, которая выглядит так, как будто она устанавливается в rakudo/parrot-install
. Итак, rakudo будет установлен в мой rakudo\parrot-install
?
Чтение Makefile подтверждает этот вывод. Я запустил make install
, и он установился в parrot_install
.
Эта часть процесса сборки / установки непонятна новичку в Perl6. Я посмотрю, смогу ли я внести исправление в документацию, чтобы прояснить ситуацию.
С верхней части моей головы:
Подчеркните, что запуск
make install
перед запуском скриптов вне сборки. Это требование в настоящее время скрыто в середине абзаца и может быть легко пропущено кем-то, просматривающим документацию (я).Явно укажите, что с
--gen-parrot
будет установлен perl6 в каталогparrot_install
.