Я использую pdl2
(оболочка PDL
) также в качестве интерактивной оболочки Perl по умолчанию (она загружает все красивые плагины для Devel::REPL
).Но мне не хватает псевдонима печати дампера x
.p
хорошо для piddles, но не работает для обычного массива ref или hash ref.Я загрузил Data::Dumper
, но ему не хватает простого способа управления глубиной, и мне нравится способ, которым вы можете быстро установить пределы глубины с помощью x
, например x 2 $deep_datastruct
для сложных структур данных.Но с Data::Dumper
процесс становится более громоздким:
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
};
В отладчике Perl вы можете добиться того же с помощью x 1 $c
напрямую.Имеет ли pdl2
нечто подобное и такое краткое?
[update] И связано с этим вопросом: есть ли pdl2
или Devel::REPL
вспомогательные функции, такие как команды отладчика Perl m
или y
?Или нужно создать модуль с PadWalker
и экспортировать их?Я хотел бы использовать настоящий REPL вместо отладчика Perl в качестве интерактивной оболочки, но все же в отладчике Perl есть некоторые важные вещи, которые я не знаю, как делать с Devel::REPL
или pdl2
.
Например, чтобы увидеть все переменные (pdl2
только показывают piddles):
pdl> help vars
PDL variables in package main::
Name Type Dimension Flow State Mem
----------------------------------------------------------------
no PDL objects in package main::
Кстати, кто-нибудь знает плагин Devel::REPL
для перечисления всех используемых переменных (например, y
вотладчик, но только имена, а не значения), а затем x
-подобно, чтобы сбросить требуемый?