Perl和评估Dumper结果

时间:2013-02-11 21:32:39

标签: perl

我向第三方发出API调用,结果以哈希值的形式返回给我,我将其命名为%hash。

当我使用Data :: Dumper打印结果时,我得到以下结果:

print Dumper %hash;

$VAR1 = '';
$VAR2 = {
     'Field1' => 'first result',
     'Field2' => {},
     'Field3' => 'random value',
     'Field4' => {},
     'Field5' => '102',
     'Field6' => '3600176056428',
     'Field7' => 'AhhRbwSXxIzaSZYuvgXE8AmAXUdy'
};

我不习惯Dumper返回两个值。我打印了结构,以便我可以确定如何访问它所拥有的值。我想访问第二个VAR($ VAR2)中的哈希数据结构。究竟是怎么做到的? $ hash {' Field2'}不会返回任何值(显然)。

4 个答案:

答案 0 :(得分:2)

您的%hash包含一个键 - 空字符串和一个值 - 您看到的数据结构表示为$VAR2。当您致电Dumper(%hash)时,Dumper函数会将您的哈希值作为带有两个元素的展平列表接收,因此它会输出两个值。

使用Dumper的更规范的方法是将引用传递给数据结构:

print Dumper \%hash;

答案 1 :(得分:2)

您的%hash只有一个密钥''(空字符串),其中包含hashref。它看起来像这样:

'' => {
     'Field1' => 'first result',
     'Field2' => {},
     'Field3' => 'random value',
     'Field4' => {},
     'Field5' => '102',
     'Field6' => '3600176056428',
     'Field7' => 'AhhRbwSXxIzaSZYuvgXE8AmAXUdy'
};

返回您指定的位置并检查您是否需要$hash

答案 2 :(得分:2)

通常你会通过引用转储哈希,所以print Dumper \%hash

目前,Data::Dumper将打印一个哈希键和值的列表,因此看起来%hash有一个单独的元素,其中空字符串作为键。

您可以$hash{''}访问此项,因此值为$hash{''}{Field1}等。

答案 3 :(得分:1)

您需要将哈希值转换为哈希引用:

print Dumper \%hash;

否则%hash将转换为key =>列表价值对。这是列表上下文中的哈希行为。

要访问以下值,您需要使用以下值:

$hash{''}{'Field1'}

因为事实上你有哈希哈希。