如何从 Perl 数据结构中获取数据
How to get data from Perl data structure
我已经将 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'
}
};
print "$VAR1->{$_}->{item_number}\n" for keys %$VAR1;
在块中使用:
for my $key (keys %$VAR1) {
print "$VAR1->{$key}->{item_number}\n"
}
我已经将 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' } }; print "$VAR1->{$_}->{item_number}\n" for keys %$VAR1;
在块中使用:
for my $key (keys %$VAR1) {
print "$VAR1->{$key}->{item_number}\n"
}