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