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 
+0

再次,你可以建议?如何使用编码所有元素? 使用编码; $ var = encode_utf8($ var); 没有工作。 –

+0

@BoontaweeHome:我建议你发布一个新问题。 – toolic