2010-06-29 18 views
3

Je viens de construire Rakudo et Parrot pour que je puisse jouer avec et commencer à apprendre Perl 6. J'ai téléchargé le livre Perl 6 et heureusement tapé dans le premier programme de démonstration (l'exemple du tournoi de tennis).Pourquoi est-ce que j'obtiens des erreurs «diviser par zéro» quand j'essaie d'exécuter mon script avec Rakudo?

Lorsque je tente d'exécuter le programme, je reçois une erreur:

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

J'ai mon perl6 binaire dans le répertoire de construction. J'ai ajouté un répertoire scripts dans le répertoire build Rakudo:

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

Si je tente d'exécuter même un simple script Bonjour tout le monde de mon répertoire scripts que je reçois la même erreur:

#!/home/daotoad/rakudo/perl6 

use v6; 
say "Hello nurse!"; 

Cependant, si je lance depuis le répertoire rakudo cela fonctionne.

Il semble qu'il y ait des variables d'environnement que je dois définir, mais je ne sais pas quelles sont les valeurs et quelles sont les valeurs à leur donner.

Des pensées?

Mise à jour:

Je préfère ne pas installer Rakudo à ce moment, je préfère courir les choses simplement à partir du répertoire de construction. Cela me permettra de garder mes modifications minimales sur mon système en essayant différentes versions de Perl6 (Rakudo * sera bientôt disponible).

Le fichier README m'a encouragé à penser que cela était possible:

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

This will create a "perl6" or "perl6.exe" executable in the current (rakudo) directory. Programs can then be run from the build directory using a command like:

$ ./perl6 hello.pl 

relisant, j'ai trouvé une référence au fait qu'il est nécessaire d'installer Rakudo avant d'exécuter des scripts en dehors du répertoire de construction:

Once built, Rakudo's make install target will install Rakudo and its libraries into the Parrot installation that was used to create it. Until this step is performed, the "perl6" executable created by make above can only be reliably run from the root of Rakudo's build directory. After make install is performed, the installed executable can be run from any directory (as long as the Parrot installation that was used to create it remains intact).

il semble donc que je dois installer Rakudo jouer avec Perl 6.

La question suivante est, où Rakudo être installé? README dit dans l'installation de Parrot utilisée pour construire. J'ai utilisé l'option --gen-parrot dans ma construction, qui ressemble à l'installation dans rakudo/parrot-install. Donc, rakudo sera installé dans mon rakudo\parrot-install?

La lecture du Makefile, supporte cette conclusion. J'ai couru make install, et il a installé dans parrot_install.

Cette partie du processus de construction/installation n'est pas claire pour un débutant à Perl6. Je vais voir si je peux avec un patch de documentation pour clarifier les choses.

Du haut de ma tête:

  1. Insistez en cours d'exécution make install avant l'exécution de scripts en dehors de la construction. Cette exigence est actuellement enterrée au milieu d'un paragraphe et peut être facilement manquée par quelqu'un écrémant les docs (moi).

  2. Expliquez clairement que --gen-parrot installera perl6 dans le répertoire parrot_install.

Répondre

4

Avez-vous exécuté make install dans Rakudo?

Il est nécessaire de le faire pour pouvoir utiliser Rakudo en dehors de son répertoire de construction (et c'est pourquoi tant le README et http://rakudo.org/how-to-get-rakudo vous dire de le faire.

Ne vous inquiétez pas, la valeur par défaut l'emplacement d'installation est locale (. en parrot_install/bin/perl dans votre répertoire Rakudo)

+0

Merci pour la réponse. J'ai mis à jour ma question pour donner une plus grande réponse. – daotoad

3

en réponse à votre mise à jour, je l'ai maintenant mis à jour le README:

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

Je vous souhaite que plus claire qu'auparavant Si. vous voyez toujours de la place pour l'amélioration, s'il vous plaît envisager de soumettre un patch à [email protected]

+0

Puis-je accepter vos deux réponses? Merci, tout votre travail est vraiment apprécié. Vous et le reste de l'équipe Perl6 font un travail incroyable face à un environnement vicieux de FUD et de naysayers. Mes sincères remerciements à vous tous. – daotoad