Warum erhalte ich ‚Teile von zero` Fehler, wenn ich versuche mein Skript mit Rakudo zu laufen?
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 durchmake
nur erstellt, von der Wurzel zuverlässig ausgeführt werden kann, von oben Rakudo Build-Verzeichnis. Nachmake 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:
-
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. -
Explizit Zustand, mit
--gen-parrot
Perl6 in dasparrot_install
Verzeichnis installiert werden.
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.