2010-10-10 8 views
10

Ich benutze pdl2 (die PDL Shell) auch als meine Standard Perl interaktive Shell (es lädt alle netten Plugins für Devel::REPL). Aber ich vermisse die x Dumper-Drucken Alias. ist nett für Piddles, aber es funktioniert nicht für eine normale Array Ref oder Hash Ref. Ich habe geladen Data::Dumper, aber es fehlt eine einfache Möglichkeit zur Steuerung der Tiefe und ich mag die Art, wie Sie schnell Tiefengrenzen mit x, z. x 2 $deep_datastruct für komplexe Datenstrukturen. Aber mit Data::Dumper der Prozess ist umständlicher:Gibt es eine Entsprechung zum Perl-Debugger 'x' in pdl2 (oder Devel :: REPL)?

pdl> say $c 
HASH(0x53b0b60) 

pdl> p $c 
HASH(0x12b14018) 

pdl> use Data::Dumper 

pdl> p Dumper $c 
$VAR1 = { 
      'c' => { 
        'c' => 3, 
        'a' => 1, 
        'b' => { 
          'c' => '3', 
          'a' => '1', 
          'b' => '2' 
          } 
       }, 
      'a' => 1, 
      'b' => 4 
     }; 
pdl> $Data::Dumper::Maxdepth = 1; 
pdl> p Dumper $c 
$VAR1 = { 
      'c' => 'HASH(0x97fba70)', 
      'a' => 1, 
      'b' => 4 
     }; 

Im Perl debugger Sie die gleiche Sache mit x 1 $c direkt erreichen können. Hat pdl2 etwas ähnliches und so kurz?

[update] Und mit dieser Frage verbunden: Hat pdl2 oder Devel::REPL haben Komfortfunktionen wie der Perl-Debugger m oder y Befehle? Oder soll man ein Modul mit PadWalker erstellen und exportieren? Ich würde gerne eine echte REPL anstelle des Perl-Debuggers als interaktive Shell verwenden, aber der Perl-Debugger hat einige wichtige Dinge, von denen ich nicht weiß, wie sie mit Devel::REPL oder pdl2 umgehen sollen.

Zum Beispiel alle Variablen zu sehen (pdl2 zeigen nur macht herum):

pdl> help vars 
PDL variables in package main:: 

Name   Type Dimension  Flow State   Mem 
---------------------------------------------------------------- 
no PDL objects in package main:: 

By the way, kennt jemand ein Devel::REPL Plugin für die Variablen in allen Gebrauch Auflistung (wie y im Debugger, aber nur die Namen, nicht die Werte) und dann haben Sie eine x-Like, um die gewünschte dump?

Antwort

4

Es sieht aus wie Devel :: REPL ein straightforward alternative für Ihre erste Frage stellt. Erstellen Sie eine Datei ‚.perldlrc‘ in Ihrem Home-Verzeichnis genannt, die wie folgt aussieht:

müssen Sie leider
use Data::Dumper; 

sub x { 
    my $depth = shift; 
    $Data::Dumper::Maxdepth = $depth; 
    print Data::Dumper->Dump([@_]) 
} 

, ein Komma als in:

pdl> x 1, $c 

Es sieht aus wie Sie die anderen Befehle mit diesem implementieren können gleicher Steuerdatei-Ansatz. Ich sehe keinen Weg, um das Komma überflüssig zu machen, obwohl ich denke, dass es keinen Grund gibt, warum Devel :: REPL nicht dazu gebracht werden kann, diese Art von Befehlen zu erkennen und zu parsen.

0

Die Devel :: REPL re.pl bereits Shell-Dumps den Wert des letzten Ausdrucks durch Standard:

[[email protected]]$ re.pl 
$ { a => 23, b => 34} 
$HASH1 = { 
      a => 23, 
      b => 34 
     }; 

$ 
+3

Das ist das Problem, ich habe diese Option aus, denn wenn Sie ein mastodontisches Composite-Objekt mit einem der Unterobjekte die Rückgabe einer Datenbank mit 10000 Zeilen haben, möchten Sie nicht Everyting ausdrucken. Wahrscheinlich möchten Sie nur die erste Ebene des Hashes drucken, um zu sehen, welche Unterobjekte enthalten (wie db> x 2 $ mastobject). –

Verwandte Themen