我在中有以下Perl代码,其中我有如下Perl结构:`
use Data::Dumper;
my %data = (
'status' => 200,
'message' => '',
'response' => {
'name' => 'John Smith',
'id' => '1abc579',
'ibge' => '3304557',
'uf' => 'XY',
'status' => bless( do{\(my $o = 1)}, 'JSON::PP::Boolean' )
}
);
my $resp = $data{'status'};
print "Response is $resp \n";
print Dumper(%data->{'response'});
但是,如果我尝试这样的操作,则可以获得状态字段:my $resp = $data{'response'}
我得到的响应是HASH(0x8b6640)
因此,我想知道是否有一种方法,我可以提取所有“响应”字段的数据,就像我可以提取“状态”一样,而不会得到哈希...
我在访问数据时尝试了所有类型的组合,但在尝试获取“response”的内容时,仍然会返回哈希值
2条答案
按热度按时间r3i60tvu1#
$data{'response'}
是访问散列值%data
上的该字段的正确方法,它返回一个散列引用,默认情况下以HASH(0x8b6640)
语法输出(相对没有帮助),但如果将该引用传递给Dumper
,它将显示所有内容。要真正 * 访问 * 这些子字段,需要解引用,这是通过间接
->
操作完成的。第一次访问不需要
->
,因为你要访问的是hash variable(即带有%
符号的变量)上的字段;第二次访问需要,因为你要解引用一个引用,至少在本质上,它和其他标量一样带有$
符号。wnvonmuf2#
谢谢你的帖子。我修改了代码如下:
现在,它的工作就像一个魅力,我能够得到我想要的数据。