Perché ottengo 'dividere per zero` errori quando si tenta di eseguire il mio script con Rakudo?
Domanda
Ho appena costruito Rakudo e Parrot modo che io possa giocare con lui e iniziare a conoscere Perl 6. Ho scaricato il libro Perl 6 e felicemente digitato nel primo programma demo (l'esempio torneo di tennis).
Quando si tenta di eseguire il programma, ottengo un errore:
Divide by zero
current instr.: '' pc -1 ((unknown file):-1)
Io ho la mia perl6
binario nella directory di compilazione. Ho aggiunto una directory di script nella directory Rakudo costruzione:
rakudo
|- perl6
\- scripts
|- perlbook_02.01
\- scores
Se provo a funzionare anche un semplice script ciao mondo dalla mia directory degli script ottengo lo stesso errore:
#!/home/daotoad/rakudo/perl6
use v6;
say "Hello nurse!";
Tuttavia, se l'eseguo dalla directory rakudo
funziona.
Sembra che ci sono alcune variabili d'ambiente ho bisogno di impostare, ma sono ad un perso su ciò che la sono e quali valori di dare loro.
Qualche idea?
Aggiornamento:
Preferirei non installare Rakudo a questo punto, preferirei appena eseguito le cose dalla cartella di compilazione. Questo mi permetterà di mantenere il mio modifiche al mio sistema minimale come io provare diversi Perl6 costruisce (Rakudo * è fuori molto presto).
Il file README mi ha incoraggiato a pensare che questo era possibile:
$ cd rakudo $ perl Configure.pl --gen-parrot $ make
Questo creerà un "perl6" o "perl6.exe" eseguibile nel corrente (Rakudo) directory. I programmi possono essere eseguiti da la cartella di generazione usando un comando come:
$ ./perl6 hello.pl
Al momento rileggere, ho trovato un riferimento al fatto che è necessario installare Rakudo prima di eseguire gli script di fuori della directory di compilazione:
Una volta costruito, bersaglio
make install
di Rakudo installerà Rakudo e le sue librerie nel installazione Parrot che è stato utilizzato per Crealo. Fino a quando si esegue questa operazione, i "perl6" eseguibile creato damake
sopra può essere eseguita solo in modo affidabile dalla radice cartella di generazione di Rakudo. Dopomake install
viene eseguita, l'eseguibile installato può essere eseguito da qualsiasi directory (a patto che l'installazione Parrot che è stato utilizzato per creare rimane intatto).
Quindi sembra che devo installare Rakudo a giocare con il Perl 6.
La prossima domanda è, dove Rakudo essere installato? README dice nel Parrot install usato per costruire.
ho usato l'opzione --gen-parrot
nella mia costruzione, che sembra che si installa nella rakudo/parrot-install
. Così Rakudo verrà installato nel mio rakudo\parrot-install
?
La lettura del Makefile, supporta questa conclusione. Mi sono imbattuto make install
, ed ho installato in parrot_install
.
Questa parte del build / processo di installazione non è chiaro per un novizio di Perl6. Vedrò se riesco con una patch di documentazione per chiarire le cose.
Al largo della parte superiore della mia testa:
-
Sottolineare esecuzione
make install
prima di eseguire gli script di fuori di costruzione. Questo requisito è attualmente sepolto nel bel mezzo di un paragrafo e può essere facilmente perso da qualcuno scrematura la documentazione (me). -
esplicitamente che con
--gen-parrot
installerà perl6 nella directoryparrot_install
.
Soluzione
Hai eseguito make install
in Rakudo?
E 'necessario farlo per essere in grado di utilizzare Rakudo di fuori della sua directory di costruzione (e questo è il motivo per cui sia il README e http://rakudo.org/how-to-get-rakudo ti dicono di farlo.
Non ti preoccupare, il percorso di installazione predefinito è locale (in parrot_install / bin / perl all'interno della vostra directory Rakudo).
Altri suggerimenti
In risposta alla tua aggiornamento ora ho aggiornato il README:
http://github.com/rakudo/rakudo/commit/261eb2ae08fee75a0a0e3935ef64c516e8bc2b98
Spero che troverete che più chiaro di prima. Se si vede ancora margini di miglioramento, perche non la presentazione di una patch per rakudobug@perl.org.