【问题标题】:How do I control the variable names in Perl's Data::Dumper?如何控制 Perl 的 Data::Dumper 中的变量名?
【发布时间】:2010-10-28 20:49:47
【问题描述】:

我有这个简单的 Perl 脚本:

#! /usr/bin/perl -w

use strict;
use Data::Dumper;

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

print Dumper(\%foo);

它输出:

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

如何让它输出这个?

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

【问题讨论】:

    标签: perl data-dumper


    【解决方案1】:
    print Data::Dumper->Dump( [ \%foo ], [ qw(*foo) ] );
    

    扩展语法采用两个数组引用:一个是要转储的标量,一个是要使用的名称。如果名称以 * 为前缀,并且对应的标量是 arrayref 或 hashref,则产生一个数组或散列赋值。

    【讨论】:

    • 啊,我曾尝试将我能想到的所有内容(或从 perldoc 复制粘贴)放在括号之间,但我没有意识到问题在于我使用的是 Dumper()数据::Dumper->Dump().
    【解决方案2】:

    除了ysth的回答,还可以使用Ovid的Data::Dumper::Names模块。

    【讨论】:

      【解决方案3】:
      use Data::Dumper;
      
      $Data::Dumper::Terse = 1;
      
      print '%foo = '.(Dumper \%foo);
      

      【讨论】:

      • 可能会很好地扩展它以解释您的代码回答问题的原因。
      • 最简单最好的解决方案。喜欢 Python 的pformat
      【解决方案4】:

      另外,Data::Dumper::Simple 也大致做到了这一点。

      【讨论】:

      • 当心源过滤器。它咬人。
      猜你喜欢
      • 1970-01-01
      • 2010-12-08
      • 2012-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-26
      • 2014-11-21
      • 1970-01-01
      相关资源
      最近更新 更多