【问题标题】:Perl Data Dumper Specifiers ExplanationPerl 数据转储器说明符说明
【发布时间】:2018-09-27 19:34:21
【问题描述】:

观察 Data::Dumper 的输出,CPAN 文档中没有解释说明符($VAR1"";)。

  1. $VAR1 的用途是什么?
  2. 分号的用途是什么?
  3. 引用的目的是什么?

这是我的输出:

$VAR1 = "Snow";
$VAR1 = "Rain";
$VAR1 = "Sunny";
$VAR1 = "";

【问题讨论】:

  • 请注意,您可以通过设置 $Data::Dumper::Varname(默认为 VAR)来更改使用的变量的名称,并通过将 $Data::Dumper::Terse 设置为 1 来完全删除这些变量和分号,如果您不这样做关心能够对结果进行字符串评估(大多数人不关心)。
  • @Grinnz 这是我在谈论数据转储器时寻找的信息类型。很多人想给这个问题打分,但他们真的不完全了解数据转储模块。
  • @Grinnz 另一个点我问这个问题是为了在使用这个模块时获得更多从业者的观点。感谢您的意见。

标签: perl data-dumper


【解决方案1】:

说明符在说明的第二段中描述:

可以对返回值进行“评估”以获取相同的副本 原始参考结构。

所以,你可以拿 Dumper 返回的字符串运行

my $x = eval $dumped_string;

【讨论】:

    【解决方案2】:

    看起来你有一个数组:

    my @arr = ('Snow','Rain','Sunny');
    print Dumper(@arr);
    

    当您传递数组时,Dumper 认为您传递了 3 个单独的变量。这就是为什么你会得到:

    $VAR1 = 'Snow';
    $VAR2 = 'Rain';
    $VAR3 = 'Sunny';
    

    为了将数组视为数据结构,您需要将引用传递给数组:

    print Dumper(\@arr);
    

    这将产生:

    $VAR1 = [
              'Snow',
              'Rain',
              'Sunny'
            ];
    

    输出表明您传递了对包含 3 个元素的数组的引用。

    【讨论】:

    • OP 的输出到处都是$VAR1,表明它来自多个Dumper 调用。
    猜你喜欢
    • 1970-01-01
    • 2013-12-20
    • 1970-01-01
    • 1970-01-01
    • 2011-04-28
    • 2021-04-27
    • 2017-11-16
    • 2010-10-31
    • 2012-06-30
    相关资源
    最近更新 更多