Réponses:
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.
control+ Lne fonctionne pas sous cette interface de commande, comment dois-je rafraîchir l'écran?
rlwrap). Toutes les solutions REPL / console tierces, y compris perlconsole, sont lourdes à installer et ont souvent plus de limitations.
perl -de1ne semble pas prendre en charge les myvariables, et les hachages ne fonctionnent pas non plus, pour une raison quelconque
perlconsolene 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.
[sudo] cpan Devel::REPLn'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.plauteur, a écrit un article énumérant plusieurs alternatives, et il suggère lui-même d'utiliser à la replyplace de re.pl: shadow.cat/blog/matt-s-trout/mstpan-17
J'ai écrit un script que j'appelle "psh":
#! /usr/bin/perl
while (<>) {
chomp;
my $result = eval;
print "$_ = $result\n";
}
Quoi que vous tapiez, il évalue en Perl:
> gmtime(2**30)
gmtime(2**30) = Sat Jan 10 13:37:04 2004
> $x = 'foo'
$x = 'foo' = foo
> $x =~ s/o/a/g
$x =~ s/o/a/g = 2
> $x
$x = faa
Si vous voulez l'historique, utilisez rlwrap . Cela pourrait être votre ~/bin/ipsexemple:
#!/bin/sh
echo 'This is Interactive Perl shell'
rlwrap -A -pgreen -S"perl> " perl -wnE'say eval()//$@'
Et voici à quoi ça ressemble:
$ ips
This is Interactive Perl shell
perl> 2**128
3.40282366920938e+38
perl>
alias iperl='rlwrap -A -S "perl> " perl -wnE '\''say eval()//$@'\'. Les utilisateurs d'OSX peuvent installer rlwrapvia Homebrew avec brew 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:
J'utilise la ligne de commande comme console:
$ perl -e 'print "JAPH\n"'
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.
fishvous 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!
Vous pouvez toujours simplement passer dans le débogueur intégré et exécuter des commandes à partir de là.
perl -d -e 1
Il existe deux REPL Perl populaires.
sudo apt-get install libreply-perl. Ensuite, il peut être exécuté simplement en tapant replydans un terminal.
J'ai créé perliun 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 rlwrapest 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é:
npm install -g perliAutrement:
Plates-formes de type Unix : téléchargez ce script dans perliun dossier dans le chemin de votre système et rendez-le exécutable avec chmod +x.
Windows : téléchargez le script en tant que perli.pl(notez l' .plextension) 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.cmddans le même dossier avec le contenu suivant: @%~dpn.pl %*; cela permet une invocation aussi juste perli.
perldocpartir de perliREPL comme 'someCommand ?'. Il semble que cela n'ait pas été mis à jour depuis un certain temps, maintenez-vous toujours perli?
perlin'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é.
perl -d est votre ami:
% perl -de 0
re.pl de Devel :: REPL
Boucle lecture-évaluation-impression:
$ perl -e'while(<>){print eval,"\n"}'
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 .
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 vue d' ensemble de Matt Trout énumère cinq choix, à perl -de 0partir de maintenant, et il recommande Reply, si l'extensibilité via des plugins est importante, ou à tinyreplpartir de Eval::WithLexicals, pour une solution minimale, pure-perl qui inclut le support de la ligne de lecture et la persistance lexicale.
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.
rlwrapvia Homebrew avec brew install rlwrap.rlwrapvia leurs gestionnaires de paquets respectifs; par exemple, sur Ubuntu, utilisez sudo apt-get install rlwrap.rlwrapet 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::Printermodule avec [sudo] cpan Data::Printerune opération unique, vous pouvez le charger dans le REPL pour utiliser la p()fonction, à laquelle vous pouvez transmettre des listes / tableaux / tables de hachage pour l'énumération.
Voici un alias nommé iperlavec readline et Data::Printersupport , que vous pouvez mettre dans le fichier d'initialisation de votre shell de type POSIX (par exemple, ~/.bashrc):
alias iperl='rlwrap -A -S "iperl> " perl -MData::Printer -wnE '\''BEGIN { say "# Use `p @<arrayOrList>` or `p %<hashTable>` to print arrays/lists/hashtables; e.g.: `p %ENV`"; } say eval()//$@'\'
Par exemple, vous pouvez ensuite effectuer les opérations suivantes pour imprimer toutes les variables d'environnement via une table de hachage %ENV:
$ iperl # start the REPL
iperl> p %ENV # print key-value pairs in hashtable %ENV
Comme pour la réponse de Ján, le résultat scalaire d'une expression est automatiquement imprimé; par exemple:
iperl> 22 / 7 # automatically print scalar result of expression: 3.14285714285714
Recherchez également ptkdb sur CPAN: http://search.cpan.org/search?query=ptkdb&mode=all
Sepia et PDE ont également leurs propres REPL (pour GNU Emacs).
Voir aussi Stylish REPL (pour GNU Emacs) http://blog.jrock.us/articles/Stylish%20REPL.pod
Vous pouvez le faire en ligne (comme beaucoup de choses dans la vie) ici:
$ rlwrap perl -d -e 1Vous obtiendrez l'historique et une invite cohérente