perl - 如何循环访问hashref?
问题描述:
我有一些hashref格式的数据。我从graph.facebook.com获取数据 如何循环访问?perl - 如何循环访问hashref?
$var = \{
'data' => [
{
'id' => '312351465029_10154168935475030',
'name' => 'Timeline Photos 1'
},
{
'name' => 'Bangchak\'s cover photo',
'id' => '312351465029_10154168087455030',
},
{
'id' => '312351465029_10154168081875030',
'name' => 'Timeline Photos 2',
}
],
'paging' => {
'previous' => 'https://graph.facebook.com/v2.6/312351465029/2',
'next' => 'https://graph.facebook.com/v2.6/312351465029/3'
}
};
这些代码没有用。
foreach $m ($var->{data})
{
if ($m->{name} =~ /Timeline/i)
{
print "id = $m->{id}\n";
}
}
答
你需要数组(perldoc perldsc)解除引用:
use warnings;
use strict;
my $var = {
'data' => [
{
'id' => '312351465029_10154168935475030',
'name' => 'Timeline Photos 1'
},
{
'name' => 'Bangchak\'s cover photo',
'id' => '312351465029_10154168087455030',
},
{
'id' => '312351465029_10154168081875030',
'name' => 'Timeline Photos 2',
}
],
'paging' => {
'previous' => 'https://graph.facebook.com/v2.6/312351465029/2',
'next' => 'https://graph.facebook.com/v2.6/312351465029/3'
}
};
foreach my $m (@{ $var->{data} }) {
if ($m->{name} =~ /Timeline/i)
{
print "id = $m->{id}\n";
}
}
__END__
id = 312351465029_10154168935475030
id = 312351465029_10154168081875030
再次,你可以建议?如何使用编码所有元素? 使用编码; $ var = encode_utf8($ var); 没有工作。 –
@BoontaweeHome:我建议你发布一个新问题。 – toolic