[英]How to print an element from an array which is inside the hash in perl
我正在嘗試從 API 打印多維格式的輸出。
use strict;
use warnings;
use Data::Dumper;
my $content={
'school_set' => 'SSET1234',
'result' => [
{
'school_name' => 'school_abc',
'display_value' => 'IL25',
'school_link' => 'example.com',
'status' => 'registerd',
'status_message' => 'only arts',
'school_id' => '58c388d40596191f',
}
],
'school_table' => 'arts_schools'
};
print "school_name is=".$content{result}[0]{school_name};
print "school_status is=".$content{result}[3]{status};
output
Global symbol "%content" requires explicit package name (did you forget to declare "my %content"?) at test8.pl line 20.
Global symbol "%content" requires explicit package name (did you forget to declare "my %content"?) at test8.pl line 21.
我必須從結果中打印如下輸出。
school_name = school_abc
school_status = registered
如果$content
是哈希引用,則需要先取消引用它。 為此使用箭頭運算符:
$content->{result}[0]{school_name}
沒有箭頭的語法僅適用於%content
。
my %content = ( result => [ { school_name => 'abc' } ] );
print $content{result}[0]{school_name};
如果要打印所有結果,則必須以某種方式遍歷數組。 例如
#!/usr/bin/perl
use warnings;
use strict;
my $content = {
'result' => [
{
'school_name' => 'school_abc',
'status' => 'registerd',
},
{
'school_name' => 'school_def',
'status' => 'pending',
}
],
};
for my $school (@{ $content->{result} }) {
print "school_name is $school->{school_name}, status is $school->{status}\n";
}
您的數據結構假定為一個數組,也許將循環輸出用於感興趣的數據會很有用。
數據以哈希引用的形式呈現,需要取消引用才能循環遍歷數組。
以下代碼片段基於您發布的代碼,並演示了如何實現所需的輸出。
use strict;
use warnings;
use feature 'say';
my $dataset = {
'school_set' => 'SSET1234',
'result' => [
{
'school_name' => 'school_abc',
'display_value' => 'IL25',
'school_link' => 'example.com',
'status' => 'registerd',
'status_message' => 'only arts',
'school_id' => '58c388d40596191f',
}
],
'school_table' => 'arts_schools'
};
for my $item ( @{$dataset->{result}} ) {
say "school_name is = $item->{school_name}\n"
. "school_status is = $item->{status}";
}
exit 0;
輸出
school_name is = school_abc
school_status is = registerd
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.