Wie kann ich eine interaktive Konsole für Perl starten, ähnlich dem irb
Befehl für Ruby oder python
Python?
264
Wie kann ich eine interaktive Konsole für Perl starten, ähnlich dem irb
Befehl für Ruby oder python
Python?
Sie können den Perl-Debugger in einem einfachen Programm verwenden, wie folgt:
perl -de1
Alternativ gibt es die Perl Console- Anwendung von Alexis Sukrieh , die ich jedoch nicht verwendet habe.
$ rlwrap perl -d -e 1
Sie erhalten Verlauf und eine konsistente Eingabeaufforderungcontrol
+L
funktioniert unter dieser Befehlsoberfläche nicht. Wie soll ich den Bildschirm aktualisieren?rlwrap
). Alle REPL / Konsolen-Lösungen von Drittanbietern, einschließlichperlconsole
, sind umständlich zu installieren und weisen häufig weitere Einschränkungen auf.perl -de1
scheint es keinemy
Variablen zu unterstützen , und Hashes funktionieren aus irgendeinem Grund auch nicht…perlconsole
leidet nicht unter diesen Problemen.Matt Trout hat nicht nur einen Artikel über eine REPL geschrieben, sondern auch einen - Devel :: REPL
Ich habe es ein bisschen benutzt und es funktioniert ziemlich gut und es befindet sich in der aktiven Entwicklung.
Übrigens habe ich keine Ahnung, warum jemand die Person, die "perl -e" erwähnt hat, von der Konsole herunter modifiziert hat. Das ist zwar nicht wirklich eine REPL, aber es ist fantastisch nützlich und ich benutze es die ganze Zeit.
quelle
[sudo] cpan Devel::REPL
hat bei mir weder unter OSX 10.10 (Perl 5.18.2) noch unter Ubuntu 14.04 (Perl 5.18.2) funktioniert: Ich erhalte Laufzeitfehler, wenn ich mich über fehlende Module beschwere. installiert ein, dann aufgegeben, nachdem ein anderes fehlendes Modul gemeldet wurde.re.pl
Autor, schrieb einen Artikel, in dem mehrere Alternativen aufgeführt sind, und er selbst schlägt vor,reply
anstelle vonre.pl
: shadow.cat/blog/matt-s-trout/mstpan-17Ich habe ein Skript geschrieben, das ich "psh" nenne:
Was auch immer Sie eingeben, es wird in Perl ausgewertet:
quelle
Wenn Sie einen Verlauf wünschen, verwenden Sie rlwrap . Dies könnte Ihr
~/bin/ips
Beispiel sein:Und so sieht es aus:
quelle
alias iperl='rlwrap -A -S "perl> " perl -wnE '\''say eval()//$@'\'
. OSX-Benutzer könnenrlwrap
über Homebrew mit installierenbrew install rlwrap
.rlwrap -A -pgreen -S'perl> ' perl -MData::Dumper -wnE'say Dumper[eval()]//$@'
Ich denke, Sie fragen nach einer REPL-Schnittstelle (Read, Evaluate, Print, Loop) für Perl. Es gibt einige Möglichkeiten, dies zu tun:
quelle
Ich benutze die Kommandozeile als Konsole:
Dann kann ich meine Bash benutzen Verlauf verwenden, um alte Befehle zurückzugewinnen. Dies bewahrt jedoch nicht den Zustand.
Dieses Formular ist am nützlichsten, wenn Sie "eine Kleinigkeit" testen möchten (z. B. bei der Beantwortung von Perl-Fragen). Oft finde ich, dass diese Befehle wörtlich in ein Shell-Skript oder Makefile geschrieben werden.
quelle
fish
brauchen Sie nicht einmal die\n
.Es gibt keine interaktive Konsole für Perl wie Python. Sie können jedoch den Perl-Debugger verwenden, um verwandte Dinge zu debuggen. Sie aktivieren es mit der Option -d, möchten jedoch möglicherweise 'man perldebug' überprüfen, um mehr darüber zu erfahren.
Nach einigem googeln gibt es ein separates Projekt, das eine Perl-Konsole implementiert, die Sie unter finden http://www.sukria.net/perlconsole.html .
Hoffe das hilft!
quelle
Sie können jederzeit einfach in den integrierten Debugger wechseln und von dort aus Befehle ausführen.
quelle
Es gibt zwei beliebte Perl-REPLs.
quelle
sudo apt-get install libreply-perl
. Dann kann es ausgeführt werden, indem einfachreply
ein Terminal eingegeben wird.Ich habe
perli
eine Perl-REPL erstellt , die unter Linux, MacOS und Windows ausgeführt wird .Der Schwerpunkt liegt auf dem automatischen Drucken von Ergebnissen, der praktischen Suche nach Dokumentationen und der einfachen Überprüfung von Übereinstimmungen mit regulären Ausdrücken.
Sie können Screenshots sehen hier .
Es funktioniert eigenständig (hat keine anderen Abhängigkeiten als Perl selbst), aber die Installation von
rlwrap
wird dringend empfohlen , um die Befehlszeilenbearbeitung, den dauerhaften Befehlsverlauf und die Vervollständigung von Registerkarten zu unterstützen - lesen Sie hier mehr .Installation
Wenn Sie Node.js installiert haben:
Andernfalls:
Unix - ähnliche Plattformen: Laden Sie dieses Skript als
perli
in einen Ordner im Pfad Ihres Systems und ausführbar machen mitchmod +x
.Windows : Laden Sie dieses Skript als
perli.pl
(beachten Sie die.pl
Erweiterung) in einen Ordner im Pfad Ihres Systems herunter .Wenn es Ihnen nichts ausmacht, Perli als aufzurufen
perli.pl
, sind Sie fertig.Andernfalls erstellen Sie eine Batchdatei
perli.cmd
mit demselben Namen und folgendem Inhalt :@%~dpn.pl %*
; Dies ermöglicht den Aufruf als gerechtperli
.quelle
perldoc
vonperli
REPL wie starten'someCommand ?'
. Sieht so aus, als wäre es eine Weile nicht aktualisiert worden. Behalten Sie immer noch Perli bei?perli
wurde seit einiger Zeit nicht mehr aktualisiert, da ich in meinem persönlichen Gebrauch keine Probleme festgestellt habe und nur wenige andere Leute es zu verwenden scheinen, aber soweit ich weiß, funktioniert es immer noch wie angekündigt.Ich habe es immer getan:
Mit 5.10 habe ich gewechselt zu:
(rlwrap ist optional)
quelle
perl -d
ist dein Freund:quelle
re.pl von Devel :: REPL
quelle
Read-Eval-Print-Schleife:
quelle
Perl hat keine Konsole, aber der Debugger kann als eine verwendet werden. Geben Sie an einer Eingabeaufforderung ein
perl -de 1
. (Der Wert "1" spielt keine Rolle, es ist nur eine gültige Aussage, die nichts bewirkt.)Es gibt auch einige Optionen für eine Perl-Shell .
Weitere Informationen finden Sie in perlfaq3 .
quelle
Sie können sich psh hier ansehen: http://gnp.github.io/psh/
Es ist eine Full-On-Shell (Sie können sie beispielsweise als Ersatz für Bash verwenden), verwendet jedoch die Perl-Syntax. So können Sie Methoden im laufenden Betrieb erstellen.
quelle
Unter Debian / Ubuntu:
quelle
Matt Trout Übersicht listet fünf Auswahlmöglichkeiten, aus
perl -de 0
ab, und er empfiehltReply
, wenn Erweiterbarkeit über Plugins wichtig ist, odertinyrepl
ausEval::WithLexicals
, für eine minimale, pure-perl - Lösung , die Readline- Unterstützung und lexikalische Ausdauer enthält.quelle
Update: Ich habe seitdem eine herunterladbare REPL erstellt - siehe meine andere Antwort .
Im Nachhinein:
rlwrap
, die Readline-Unterstützung für jeden Befehl bietet, können Sie sie mit einem einfachen Perl-Befehl kombinieren, um eine verwendbare REPL zu erstellen , und somit auf REPL-Lösungen von Drittanbietern verzichten.rlwrap
über Homebrew mit installierenbrew install rlwrap
.rlwrap
über ihre jeweiligen Paketmanager anbieten ; zB unter Ubuntu verwendensudo apt-get install rlwrap
.rlwrap
und einem Perl-Befehl.Was Sie mit Jáns Antwort NICHT bekommen :
Die einzige Lösung von Drittanbietern, die diese anbietet (mit nicht trivialer Installation + zusätzlichen, nicht offensichtlichen Schritten), ist psh , aber:
Es hat seit ungefähr 2,5 Jahren keine Aktivität mehr gesehen
sein Fokus ist anders, dass es zielt darauf ab , ein vollwertiges zu sein Shell - Ersatz , und so funktioniert wie eine herkömmliche Schale, was bedeutet , dass sie nicht automatisch einen Befehl als zu bewerten sind Perl - Anweisung und erfordert einen expliziten Ausgabebefehl wie
print
zu Drucken Sie das Ergebnis eines Ausdrucks.Ján Sáreníks Antwort kann auf eine Weise verbessert werden:
Wenn Sie das
Data::Printer
Modul mit installieren[sudo] cpan Data::Printer
einmalig , können Sie es zur Verwendung der Funktion in die REPL ladenp()
, an die Sie Listen / Arrays / Hashtabellen zur Aufzählung übergeben können.Hier ist ein Alias
iperl
mit Readline undData::Printer
Unterstützung , den Sie in die Initialisierungsdatei Ihrer POSIX-ähnlichen Shell einfügen können (z. B.~/.bashrc
):Sie können dann beispielsweise Folgendes tun, um alle Umgebungsvariablen über die Hashtabelle zu drucken
%ENV
:Wie bei Jáns Antwort wird das skalare Ergebnis eines Ausdrucks automatisch gedruckt. z.B:
quelle
Suchen Sie auch im CPAN nach ptkdb: http://search.cpan.org/search?query=ptkdb&mode=all
quelle
Sepia und PDE haben auch eigene REPLs (für GNU Emacs).
quelle
Siehe auch Stylish REPL (für GNU Emacs) http://blog.jrock.us/articles/Stylish%20REPL.pod
quelle
Sie können es online tun (wie viele Dinge im Leben) hier:
https://www.tutorialspoint.com/execute_perl_online.php
quelle