我向第三方发出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'}不会返回任何值(显然)。
答案 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'}
因为事实上你有哈希哈希。