是否有相当于pdl2(或Devel :: REPL)中的perl调试器’x’?

我正在使用pdl2( PDL shell)作为我的认Perl交互式shell(它加载了所有漂亮的插件Devel::REPL).但我错过了x dumper-printing别名. p对于piddles是好的,但它不适用于正常的数组引用或散列引用.我已经加载了 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'
                          }
                 },'b' => 4
        };
pdl>  $Data::Dumper::Maxdepth = 1;
pdl> p Dumper $c
$VAR1 = {
          'c' => 'HASH(0x97fba70)','b' => 4
        };

在Perl debugger中,您可以直接与x 1 $c实现同样的事情. pdl2是否有类似的东西,如此简洁?

[更新]
和这个问题有关:pdl2或者Devel :: REPL是否有诸如Perl调试器命令m或y之类的方便函数?还是应该用PadWalker创建一个模块并导出?我想使用一个真正的REPL而不是Perl调试器作为一个交互式shell,但仍然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-like来转储所需的变量?

解决方法

看起来Devel :: REPL为您的第一个问题提供了 straightforward alternative.在您的主目录中创建一个名为“.perldlrc”的文件,如下所示:
use Data::Dumper;

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

不幸的是,你需要一个逗号,如:

pdl> x 1,$c

看起来您可以使用相同的控制文件方法实现其他命令.我没有办法摆脱对逗号的需要,虽然我认为没有任何理由Devel :: REPL不能识别和解析这些命令.

相关文章

1. 如何去重 #!/usr/bin/perl use strict; my %hash; while(...
最近写了一个perl脚本,实现的功能是将表格中其中两列的数据...
表的数据字典格式如下:如果手动写MySQL建表语句,确认麻烦,...
巡检类工作经常会出具日报,最近在原有日报的基础上又新增了...
在实际生产环境中,常常需要从后台日志中截取报文,报文的形...
最近写的一个perl程序,通过关键词匹配统计其出现的频率,让...