6 Stimmen

Was sind die Nachteile der Verwendung des Perl-Debuggers gegenüber einer echten REPL wie Devel::REPL?

Ich verwende normalerweise perl -de 42 um eine interaktive Perl-Shell zu erhalten. Ich habe gesehen Devel::REPL und ich habe einige Blogs gesehen wie http://www.xenoterracide.com/2010/07/making-repl-usable.html und erklärt, wie Sie die Devel::REPL mit den Plugins, die ich aber noch nicht verwendet habe.

Ist es zu schade, den Debugger als interaktive Shell zu verwenden? Warum?

Anmerkung: Die in diesem Artikel genannten Nachteile PerlMonks-Knoten waren Einschränkungen des Benutzers, nicht des Perl-Debuggers.

Wo kann ich mehr über Perl REPL lesen?

Ist Devel::REPL bereit für das Rampenlicht?

UPDATE: Ich habe die Antwort von Pedro akzeptiert, weil sie die Frage, die ich gestellt habe, beantwortet hat, aber ich würde trotzdem gerne wissen, wann und warum (wenn überhaupt) die Verwendung des Perl-Debuggers als interaktive Shell im Vergleich zu einer der Perl-REPL-Implementierungen eine schlechte Idee ist. Und welche Perl REPL bevorzugen Sie?

8voto

Pedro Silva Punkte 4602

Ein Nachteil der perl -d ist, dass lexikalische Variablen sofort aus dem Anwendungsbereich verschwinden. Beispiel:

DB<1> my $p = 123;

DB<2> print $p;

DB<3>

Von Perldebug :

N impliziten Bereich gebunden ist. [ ] neu eingeführte lexikalische Variable oder ein geänderter Capture-Puffer-Inhalt nach dem eval verloren. Der Debugger ist eine nette Umgebung, um Perl zu lernen, aber wenn Sie interaktiv experimentieren mit Material experimentieren, das sich im selben Scope sein sollte, packen Sie es in einen Zeilenscope, packen Sie es in eine Zeile.

3voto

ysth Punkte 91645

Anstatt den Debugger zu verwenden und auf Funktionen zu verzichten, verwende ich lieber nur

perl -wnE'say eval()//$@'

Ich habe Devel::REPL benutzt und mag es, aber ich habe mich nie daran gewöhnt, es zu benutzen.

Ein Vorteil bei der Verwendung des Debuggers ist, dass er die Möglichkeit bietet $DB::single=1 um an einem bestimmten Punkt anzuhalten und einen Einzelschritt zu machen.

1voto

draegtun Punkte 22205

Beide haben unterschiedliche Ziele. Der Debugger ist optimiert für Fehlersuche ein bereits geschriebenes Perl-Skript/Programm. Während ein REPL zielt in erster Linie darauf ab, schnelles Sprachfeedback zu geben und ist für die interaktive Eingabe (der Entwickler) optimiert.

Wenn ich z.B. folgendes im Perl-Debugger mache:

DB<1> for my $x (1..10) {

Ich bekomme eine Missing right curly or square bracket at (eval 5)... Fehler.

Während bei Devel::REPL es erlaubt die Eingabe mehrerer Zeilen:

$ for my $x (1..3) {
> say $x;
> }
1
2
3

Ich kann nur empfehlen Devel::REPL und mit den zusätzlichen Plugins wird es zu einem praktischen Entwicklungswerkzeug, das neben Ihrem Editor läuft.

/I3az/

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X