Gibt es ein Äquivalent zu dem Perl-Debugger 'x' in PDL2 (oder Devel :: REPL)?
-
29-09-2019 - |
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 / p>
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
};
$