Perl初学者在这里。我正在为我的工作编写一个小型自动化脚本。我需要传递一组数字作为输入(从JSON文件开始输入)到我的Perl函数中。这是我的代码:
my $idFile='GNOC_IDS.json';
my $idJSON;
{
local $/;
open my $fh, '<', $idFile or die $!;
$idJSON = <$fh>;
close $fh;
}
my $id_array = decode_json $idJSON;
my @decodedIDS = Dumper(\$id_array);
foreach my $ids(@decodedIDS){
print $ids;
my $results= $client->get_entities(
entity_id=>$ids
);
print Dumper(\$results);
}
但是,我的问题是$ ID具有以下格式:
[ {
'MISC' => '1743'
},
{
'MISC' => '1743'
},
{
'MISC' => '1733'
},
{
'MISC' => '2736'
},
{
'MISC' => '1763'
},
{
'MISC' => '3133'
},
{
'MISC' => '1743'
},
{
'MISC' => '1733'
},
{
'MISC' => '2802'
},
{
'MISC' => '1699'
},
{
'MISC' => '2736'
},
{
'MISC' => '2600'
}
]
我想要的只是将数字(例如1699,2735等)输入到“get_entities”中。函数,因为现在它给我一个&#34;输入必须是整数错误&#34;。
答案 0 :(得分:2)
假设您的Dumper
如下,您可以使用map代替use warnings;
use strict;
use Data::Dumper;
my $id_array = [
{
'MISC' => '1743'
},
{
'MISC' => '1743'
},
{
'MISC' => '1733'
},
{
'MISC' => '2736'
},
{
'MISC' => '1763'
},
{
'MISC' => '3133'
},
];
my @decodedIDS = map { $_->{MISC} } @{ $id_array };
print Dumper(\@decodedIDS);
__END__
$VAR1 = [
'1743',
'1743',
'1733',
'2736',
'1763',
'3133'
];
来访问这些数字:
{{1}}
答案 1 :(得分:-1)
有两种方法可以做到这一点,在循环之前展平或在循环中引用每个项目的数据。
拼合:
…
foreach my $ids (map {$_->{'MISC'}} @decodedIDS){ …
…
或参考内容:
…
foreach my $ids (@decodedIDS) {
print $ids->{'MISC'};
…