Perché ottengo 'dividere per zero` errori quando si tenta di eseguire il mio script con Rakudo?

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

  •  01-10-2019
  •  | 
  •  

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 da make sopra può essere eseguita solo in modo affidabile dalla radice   cartella di generazione di Rakudo. Dopo make 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:

  1. 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).

  2. esplicitamente che con --gen-parrot installerà perl6 nella directory parrot_install.

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top