我应该如何在Perl的Data::Dumper中控制变量名称?

12

我有这个简单的Perl脚本:

#! /usr/bin/perl -w

use strict;
use Data::Dumper;

my %foo = ( 'abc' => 1 );

print Dumper(\%foo);

它输出:

$VAR1 = {
          'abc' => 1
        };

我该如何使输出变成这样呢?

%foo = (
         'abc' => 1
       );
4个回答

24
print Data::Dumper->Dump( [ \%foo ], [ qw(*foo) ] );

扩展语法需要两个数组引用:一个要转储的标量数组,另一个是要使用的名称数组。如果名称以 * 为前缀,并且相应的标量是数组引用或哈希引用,则会生成数组或哈希赋值。


啊,我已经尝试将我能想到的一切(或从perldoc中复制粘贴)都放在括号之间,但我没有意识到问题是我使用了Dumper()而不是Data::Dumper->Dump()。 - raldi

9
use Data::Dumper;

$Data::Dumper::Terse = 1;

print '%foo = '.(Dumper \%foo);

可能会更好的是,进一步解释你的代码为什么能够回答这个问题。 - pjmorse
1
最简单和最好的解决方案。就像Python的pformat一样。 - saeedgnu

8

2

小心源代码过滤器,它会咬人。 - Kent Fredric

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接