如何从Perl数据结构中获取数据



我已经将JSON解析为以下数据结构:

$VAR1 = {
'041012020' => {
'item_number' => 'P2345'
},
'041012021' => {
'item_number' => 'I0965'
},
'041012022' => {
'item_number' => 'R2204'
}
};

我试图使用以下代码获取item_numbers的值,它将HASH值作为输出,而不是实际的item_number值。请指导我获取期望值。

foreach my $value (values %{$json_obj}) {
say "Value is: $value,";
}

输出:

Value is: HASH(0x557ce4e2f3c0),
Value is: HASH(0x557ce4e4de18),
Value is: HASH(0x557ce4e4dcf8),

如果我使用相同的代码来获得钥匙,它的工作非常好

foreach my $key (keys %{$json_obj}) {
say "Key is: $key,";
}

输出:

Key is: 041012020,
Key is: 041012020,
Key is: 041012022,

散列元素的值是对散列({ item_number => 'P2345' }(的引用。当你把一个参考资料串起来时,你会得到这样的结果。如果您想要项目编号,您需要告诉Perl。

for my $value (values %$data) {
say $value->{item_number};
}

for my $item_number ( map { $_->{item_number} } values %$data ) {
say $item_number;
}

以下是您的问题的简短代码。

#!usr/bin/perl$VAR1={"041012020"=>{'item_number'=>'P2345'},'041012021'=>{'item_number'=>'I0965'},'041012022'=>{'item_number'=>'R2204'}};为密钥%$VAR1打印"$VAR1->{$_}->{item_number}\n">

要在块中使用:

for my $key (keys %$VAR1) {
print "$VAR1->{$key}->{item_number}n"
}

最新更新