Frage

Ich bin mit pdl2 (dem PDL Shell) auch als meine Standard-Perl interaktiv Shell (es lädt all schöner Plugins für Devel::REPL ). Aber mir fehlt die x alias dumper-Druck. p ist schön für macht herum, aber es funktioniert nicht für ein normales Array ref oder Hash-ref. Ich geladen haben Data::Dumper aber es fehlt eine einfache Möglichkeit, Tiefe und ich steuern, wie die Art und Weise können Sie schnell Satz Tiefengrenzen mit x, zB x 2 $deep_datastruct für komplexe Datenstrukturen. Aber mit Data::Dumper der Prozess umständlich ist:

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
        };

In der Perl Debugger die gleiche Sache mit x 1 $c direkt erreichen kann. Hat pdl2 etwas ähnlich und so prägnant?

[Update] Und mit dieser Frage verbunden: nicht pdl2 oder Devel::REPL Komfortfunktionen haben wie die Perl Debuggerkommandos m oder y? Oder sollte man ein Modul erstellen mit PadWalker und exportieren? Ich möchte eine echte REPL anstelle des Perl-Debugger als interaktive Shell verwenden, aber immer noch der Perl-Debugger hat einige wichtige Dinge, die ich weiß nicht, wie mit Devel::REPL oder pdl2 zu tun.

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

pdl> help vars
PDL variables in package main::

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

Übrigens, kennt jemand ein Devel::REPL Plugin für alle Variablen im Einsatz Auflistung (wie y im Debugger, sondern nur die Namen, nicht die Werte) und haben dann eine x artig das wollte man dump

War es hilfreich?

Lösung

Es sieht aus wie Devel :: REPL bietet eine einfache Alternative für Ihre erste Frage. Erstellen Sie eine Datei mit dem Namen ‚.perldlrc‘ in Ihrem Home-Verzeichnis, das aussieht wie:

use Data::Dumper;

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

Leider müssen Sie ein Komma als in:

pdl> x 1, $c

Es sieht aus wie Sie die anderen Befehle mit dem gleichen Steuer-Datei Ansatz implementieren können. Ich sehe keinen Weg, um die Notwendigkeit für das Komma los, obwohl ich glaube nicht, dass es kein Grund Devel :: REPL kann diese Arten von Befehlen zu erkennen und analysieren gemacht werden.

Andere Tipps

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

[foo@host]$ re.pl
$ { a => 23, b => 34}
$HASH1 = {
           a => 23,
           b => 34
         };

$ 
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top