2016-06-10 52 views
1

我有一些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"; 
    } 
} 

回答

2

你需要數組(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