我发现自己使用这种方法一直打印出Perl值:
sub d {
Data::Dumper->new([])->Terse(1)->Indent(0)->Values([$_[0]])->Dump;
}
say "x = ", d($x), ' y = ', d($y);
我喜欢这个,因为我的输出中不需要$VAR1 =
,而且我很少处理递归数据结构。
但是,每当我打电话给Data::Dumper
时,想到创建一个新的d()
对象并执行那么长的初始化链就会让我烦恼。
我可以使用其他字符串吗?
答案 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);
}