Я использую 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 сбросить требуемый?