Perl 我不知道';我不想使用Data::Dumper';s默认设置,我能做什么?

Perl 我不知道';我不想使用Data::Dumper';s默认设置,我能做什么?,perl,data-dumper,Perl,Data Dumper,我发现自己一直在使用这种方法打印Perl值: sub d { Data::Dumper->new([])->Terse(1)->Indent(0)->Values([$_[0]])->Dump; } say "x = ", d($x), ' y = ', d($y); 我喜欢这样,因为我不想在输出中使用$VAR1=,而且我很少处理递归数据结构 但是每次调用d()时,创建一个新的Data::Dumper对象并执行一长串初始化的想法让我感到困扰 我是否可以使用其

我发现自己一直在使用这种方法打印Perl值:

sub d {
  Data::Dumper->new([])->Terse(1)->Indent(0)->Values([$_[0]])->Dump;
}

say "x = ", d($x), ' y = ', d($y);
我喜欢这样,因为我不想在输出中使用
$VAR1=
,而且我很少处理递归数据结构

但是每次调用
d()
时,创建一个新的
Data::Dumper
对象并执行一长串初始化的想法让我感到困扰

我是否可以使用其他架线机?

选项1,使用:

未经测试,但类似的方法应该有效。

我尝试过,但从未回头

use Data::Dump 'dump';

dump $structure;
这很方便。与您需要的设置不同,但可能对其他人有好处<代码>排序键尤其重要

从文件中:

Data::Dumper::Concise;
warn Dumper($var);
相当于:

use Data::Dumper;
{
  local $Data::Dumper::Terse = 1;
  local $Data::Dumper::Indent = 1;
  local $Data::Dumper::Useqq = 1;
  local $Data::Dumper::Deparse = 1;
  local $Data::Dumper::Quotekeys = 0;
  local $Data::Dumper::Sortkeys = 1;
  warn Dumper($var);
}

不幸的是,这会修改其他人的设置。请使用
local
进行设置。例如
{local$Data::Dumper::Terse=1;比如Dumper($x);}
是的,我已经做到了。我还清除了
,这样转储程序对象就不会保留对上次转储的内容的引用。
Data::Dumper::Concise;
warn Dumper($var);
use Data::Dumper;
{
  local $Data::Dumper::Terse = 1;
  local $Data::Dumper::Indent = 1;
  local $Data::Dumper::Useqq = 1;
  local $Data::Dumper::Deparse = 1;
  local $Data::Dumper::Quotekeys = 0;
  local $Data::Dumper::Sortkeys = 1;
  warn Dumper($var);
}