Comment puis-je démarrer une console interactive pour Perl, similaire à la irb
commande pour Ruby ou python
pour Python?
264
Comment puis-je démarrer une console interactive pour Perl, similaire à la irb
commande pour Ruby ou python
pour Python?
Vous pouvez utiliser le débogueur perl sur un programme trivial, comme ceci:
perl -de1
Sinon, il y a l' application Perl Console d' Alexis Sukrieh , mais je ne l'ai pas utilisée.
$ rlwrap perl -d -e 1
Vous obtiendrez l'historique et une invite cohérentecontrol
+L
ne fonctionne pas sous cette interface de commande, comment dois-je rafraîchir l'écran?rlwrap
). Toutes les solutions REPL / console tierces, y comprisperlconsole
, sont lourdes à installer et ont souvent plus de limitations.perl -de1
ne semble pas prendre en charge lesmy
variables, et les hachages ne fonctionnent pas non plus, pour une raison quelconqueperlconsole
ne souffre pas de ces problèmes.Non seulement Matt Trout a écrit un article sur un REPL, mais il en a également écrit un - Devel :: REPL
Je l'ai un peu utilisé et cela fonctionne assez bien, et il est en cours de développement actif.
BTW, je n'ai aucune idée pourquoi quelqu'un a modifié la personne qui a mentionné l'utilisation de "perl -e" à partir de la console. Ce n'est pas vraiment un REPL, c'est vrai, mais c'est incroyablement utile, et je l'utilise tout le temps.
la source
[sudo] cpan Devel::REPL
n'a pas fonctionné pour moi, ni sur OSX 10.10 (Perl 5.18.2) ni sur Ubuntu 14.04 (Perl 5.18.2): je reçois des erreurs d'exécution se plaignant des modules manquants; installé un, puis abandonné après qu'un autre module manquant a été signalé.re.pl
auteur, a écrit un article énumérant plusieurs alternatives, et il suggère lui-même d'utiliser à lareply
place dere.pl
: shadow.cat/blog/matt-s-trout/mstpan-17J'ai écrit un script que j'appelle "psh":
Quoi que vous tapiez, il évalue en Perl:
la source
Si vous voulez l'historique, utilisez rlwrap . Cela pourrait être votre
~/bin/ips
exemple:Et voici à quoi ça ressemble:
la source
alias iperl='rlwrap -A -S "perl> " perl -wnE '\''say eval()//$@'\'
. Les utilisateurs d'OSX peuvent installerrlwrap
via Homebrew avecbrew install rlwrap
.rlwrap -A -pgreen -S'perl> ' perl -MData::Dumper -wnE'say Dumper[eval()]//$@'
Je pense que vous posez des questions sur une interface REPL (lecture, évaluation, impression, boucle) pour Perl. Il y a quelques façons de le faire:
la source
J'utilise la ligne de commande comme console:
Ensuite, je peux utiliser mon historique bash pour récupérer les anciennes commandes. Cela ne préserve cependant pas l'état.
Ce formulaire est très utile lorsque vous souhaitez tester "une petite chose" (comme lorsque vous répondez à des questions Perl). Souvent, je trouve que ces commandes sont récupérées textuellement dans un script shell ou un makefile.
la source
fish
vous n'avez même pas besoin de\n
.Il n'y a pas de console interactive pour Perl intégrée comme le fait Python. Vous pouvez cependant utiliser le débogueur Perl pour effectuer des tâches liées au débogage. Vous l'allumez avec l'option -d, mais vous voudrez peut-être consulter 'man perldebug' pour en savoir plus.
Après un peu de recherche sur Google, il existe un projet distinct qui implémente une console Perl que vous pouvez trouver sur http://www.sukria.net/perlconsole.html .
J'espère que cela t'aides!
la source
Vous pouvez toujours simplement passer dans le débogueur intégré et exécuter des commandes à partir de là.
la source
Il existe deux REPL Perl populaires.
la source
sudo apt-get install libreply-perl
. Ensuite, il peut être exécuté simplement en tapantreply
dans un terminal.J'ai créé
perli
un REPL Perl qui fonctionne sous Linux, macOS et Windows .Son objectif est l'impression automatique des résultats, des recherches de documentation pratiques et une inspection facile des correspondances d'expressions régulières.
Vous pouvez voir des captures d'écran ici .
Il fonctionne de manière autonome (n'a pas de dépendances autres que Perl lui-même), mais l' installation de
rlwrap
est fortement recommandée afin de prendre en charge l'édition en ligne de commande, l'historique persistant des commandes et la complétion des tabulations - en savoir plus ici .Installation
S'il vous arrive d'avoir Node.js installé:
Autrement:
Plates-formes de type Unix : téléchargez ce script dans
perli
un dossier dans le chemin de votre système et rendez-le exécutable avecchmod +x
.Windows : téléchargez le script en tant que
perli.pl
(notez l'.pl
extension) dans un dossier dans le chemin de votre système.Si cela ne vous dérange pas d'invoquer Perli as
perli.pl
, vous êtes prêt.Sinon, créez un fichier de commandes nommé
perli.cmd
dans le même dossier avec le contenu suivant:@%~dpn.pl %*
; cela permet une invocation aussi justeperli
.la source
perldoc
partir deperli
REPL comme'someCommand ?'
. Il semble que cela n'ait pas été mis à jour depuis un certain temps, maintenez-vous toujours perli?perli
n'a pas été mis à jour depuis un certain temps, car dans mon utilisation personnelle, je n'ai rencontré aucun problème, et peu d'autres personnes semblent l'utiliser, mais, pour autant que je sache, cela fonctionne toujours comme annoncé.J'ai toujours fait:
Avec 5.10, je suis passé à:
(rlwrap est facultatif)
la source
perl -d
est votre ami:la source
re.pl de Devel :: REPL
la source
Boucle lecture-évaluation-impression:
la source
Perl n'a pas de console mais le débogueur peut être utilisé comme tel. À une invite de commandes, tapez
perl -de 1
. (La valeur "1" n'a pas d'importance, c'est juste une déclaration valide qui ne fait rien.)Il existe également quelques options pour un shell Perl .
Pour plus d'informations, lisez perlfaq3 .
la source
Vous pouvez consulter psh ici: http://gnp.github.io/psh/
C'est un shell complet (vous pouvez l'utiliser en remplacement de bash par exemple), mais utilise la syntaxe perl .. vous pouvez donc créer des méthodes à la volée, etc.
la source
Sous Debian / Ubuntu:
la source
La vue d' ensemble de Matt Trout énumère cinq choix, à
perl -de 0
partir de maintenant, et il recommandeReply
, si l'extensibilité via des plugins est importante, ou àtinyrepl
partir deEval::WithLexicals
, pour une solution minimale, pure-perl qui inclut le support de la ligne de lecture et la persistance lexicale.la source
Mise à jour: j'ai depuis créé un REPL téléchargeable - voir mon autre réponse .
Avec le recul:
rlwrap
, qui fournit une prise en charge de la ligne de lecture à n'importe quelle commande, vous pouvez la combiner avec une simple commande Perl pour créer un REPL utilisable , et ainsi vous passer de solutions REPL tierces.rlwrap
via Homebrew avecbrew install rlwrap
.rlwrap
via leurs gestionnaires de paquets respectifs; par exemple, sur Ubuntu, utilisezsudo apt-get install rlwrap
.rlwrap
et une commande Perl.Ce que vous n'obtenez PAS avec la réponse de Ján:
La seule solution tierce qui les propose (avec une installation non triviale + étapes supplémentaires non évidentes), est psh , mais:
il n'a pas vu d'activité depuis environ 2,5 ans
son objectif est différent en ce qu'il vise à être un véritable remplacement de la coque , et fonctionne ainsi comme une coquille traditionnelle, ce qui signifie qu'il n'évalue pas automatiquement une commande en tant que Perl déclaration, et nécessite une commande de sortie explicite, comme
print
à imprimer le résultat d'une expression.La réponse de Ján Sáreník peut être améliorée d'une manière:
Si vous installez le
Data::Printer
module avec[sudo] cpan Data::Printer
une opération unique, vous pouvez le charger dans le REPL pour utiliser lap()
fonction, à laquelle vous pouvez transmettre des listes / tableaux / tables de hachage pour l'énumération.Voici un alias nommé
iperl
avec readline etData::Printer
support , que vous pouvez mettre dans le fichier d'initialisation de votre shell de type POSIX (par exemple,~/.bashrc
):Par exemple, vous pouvez ensuite effectuer les opérations suivantes pour imprimer toutes les variables d'environnement via une table de hachage
%ENV
:Comme pour la réponse de Ján, le résultat scalaire d'une expression est automatiquement imprimé; par exemple:
la source
Recherchez également ptkdb sur CPAN: http://search.cpan.org/search?query=ptkdb&mode=all
la source
Sepia et PDE ont également leurs propres REPL (pour GNU Emacs).
la source
Voir aussi Stylish REPL (pour GNU Emacs) http://blog.jrock.us/articles/Stylish%20REPL.pod
la source
Vous pouvez le faire en ligne (comme beaucoup de choses dans la vie) ici:
https://www.tutorialspoint.com/execute_perl_online.php
la source