Warum erhalte ich ‚Teile von zero` Fehler, wenn ich versuche mein Skript mit Rakudo zu laufen?

StackOverflow https://stackoverflow.com/questions/3144043

  •  01-10-2019
  •  | 
  •  

Frage

Ich habe gerade gebaut Rakudo und Parrot, damit ich mit ihm spielen konnte und loszulegen auf dem Lernen Perl 6. ich die Perl 6 Buch heruntergeladen und glücklich in dem ersten Demo-Programm eingegeben (das Tennisturnier Beispiel).

Wenn ich versuche, das Programm auszuführen, ich erhalte eine Fehlermeldung:

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

Ich habe meine perl6 binär in dem Build-Verzeichnis. Ich habe ein Skript-Verzeichnis unter dem rakudo Build-Verzeichnis:

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

Wenn ich versuche, auch eine einfache Hallo Welt Skript aus meinem scripts ich den gleichen Fehler zu starten:

#!/home/daotoad/rakudo/perl6

use v6;
say "Hello nurse!";

Allerdings, wenn ich es aus dem rakudo Verzeichnis ausgeführt funktioniert es.

Es klingt wie es einige Umgebungsvariablen, die ich setzen müssen, aber ich bin an einem verloren, was das sind und was sie geben Werte.

Alle Gedanken?

Update:

Ich würde eher installieren an dieser Stelle nicht rakudo, würde ich eher nur laufen die Dinge aus dem Build-Verzeichnis. Dies ermöglicht es mir, meine Änderungen an meinem System minimal zu halten, wie ich probieren verschiedene Perl6 baut (Rakudo * out ist sehr schnell).

Die Readme-Datei aufgefordert, mich zu glauben, dass dies möglich war:

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

Dies wird ein „Perl6“ oder „perl6.exe“ ausführbare Datei in dem erstellen   Strom (rakudo) Verzeichnis. Programme können dann aus ausgeführt werden   das Build-Verzeichnis einen Befehl wie mit:

   $ ./perl6 hello.pl

Beim Wiederlesen, fand ich einen Hinweis auf die Tatsache, dass es notwendig ist, rakudo zu installieren, bevor Skripte außerhalb des Build-Verzeichnis ausgeführt wird:

  

Einmal gebaut, wird Rakudo des make install Ziel Rakudo installieren   und seine Bibliotheken in die Parrot-Installation, die verwendet wurde, um   erstelle es. Bis zu diesem Schritt durchgeführt wird, die „Perl6“ ausführbar   durch make nur erstellt, von der Wurzel zuverlässig ausgeführt werden kann, von oben   Rakudo Build-Verzeichnis. Nach make install durchgeführt wird,   die installierte ausführbare Datei kann aus einem beliebigen Verzeichnis (so lange ausgeführt werden   die Parrot-Installation, die verwendet wurde, zu schaffen, es bleibt intakt).

So sieht es aus wie ich brauche rakudo installieren mit Perl 6 zu spielen.

Die nächste Frage ist, wo rakudo installiert werden? README sagt in der Parrot zu bauen verwendet installieren.

habe ich die --gen-parrot Option in meinem Build, die aussieht wie es in rakudo/parrot-install installiert. So rakudo wird in meinem rakudo\parrot-install installiert werden?

die Makefile Lesen, unterstützt diese Schlussfolgerung. Ich lief make install, und es hat installieren in parrot_install.

Dieser Teil des Build / Installationsprozess ist für einen Neuling zu Perl6 unklar. Ich werde sehen, ob ich das kann sich mit einem Dokumentations Patch, um die Dinge zu klären.

Aus der Spitze von meinem Kopf:

  1. Betonen läuft make install vor Skripten außerhalb von Build ausgeführt wird. Diese Anforderung wird derzeit in der Mitte eines Absatzes bestattet und kann leicht von jemandem Skimming die Dokumentation (me) fehlen.

  2. Explizit Zustand, mit --gen-parrot Perl6 in das parrot_install Verzeichnis installiert werden.

War es hilfreich?

Lösung

Did you run make install in Rakudo?

It's necessary to do it to be able to use Rakudo outside its build directory (and that's why both the README and http://rakudo.org/how-to-get-rakudo tell you to do it.

Don't worry, the default install location is local (in parrot_install/bin/perl inside your rakudo directory).

Andere Tipps

In response to your update I've now updated the README:

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

I hope you find that clearer than before. If you still see room for improvement, please consider submitting a patch to rakudobug@perl.org.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top