我不想使用Data :: Dumper的默认设置,我该怎么办?

时间:2011-07-27 21:01:43

标签: perl data-dumper

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

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

say "x = ", d($x), ' y = ', d($y);

我喜欢这个,因为我的输出中不需要$VAR1 =,而且我很少处理递归数据结构。

但是,每当我打电话给Data::Dumper时,想到创建一个新的d()对象并执行那么长的初始化链就会让我烦恼。

我可以使用其他字符串吗?

4 个答案:

答案 0 :(得分:5)

选项1,使用Data::Dumper variables

$Data::Dumper::Terse  = 1;
$Data::Dumper::Indent = 0;

say Dumper "x =", Dumper($x), " y = ", Dumper($y);  

答案 1 :(得分:5)

sub d {
  use feature 'state';

  state $dd = Data::Dumper->new([])->Terse(1)->Indent(0);
  return $dd->Values(shift)->Dump;
}

未经测试,但这样的事情应该有用。

答案 2 :(得分:4)

我试过了Data::Dump,但从未回头。

use Data::Dump 'dump';

dump $structure;

答案 3 :(得分:1)

Data::Dumper::Concise很方便。设置与您不同,但可能对其他人有利。 Sortkeys尤为必要

来自文档:

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);
}