2014-06-17 43 views
0

我寫了一個perl腳本,它訪問JIRA REST API以獲取與特定JQL查詢匹配的問題列表。有時候,結果只是一個問題,其他時候我會回來。遍歷Perl Hashes數組

$client->GET(
$apiPath.$jql.$fieldRes, 
$headers); 

#a perl hash of results 
my $response = from_json($client->responseContent()); 

而$響應是一個Perl的哈希,如果我嘗試深入到哈希我打的問題。

散列內有一系列「問題」。

我想拉的數據用 「的foreach」 爲每一個具體的問題,但我不斷收到錯誤:

foreach my $issues ($response->{'issues'}) 
{ 
     print STDERR Dumper($issues->{'key'}); 
} 

錯誤......

Pseudo-hashes are deprecated at script.pl line #. 
Argument "JIRA-10011" isn't numeric in hash element at script.pl line #. 
Bad index while coercing array into hash at script.pl line #. 

任何幫助表示讚賞

+0

'$ response - > {issues}'的數據類型是什麼? –

+1

'使用Data :: Dumper的輸出是什麼;打印(自卸車($響應));'? – ikegami

+0

$ response是一個perl散列,我無法顯示數據,但響應問題是一個ARRAY – user3417074

回答

1

散列內有一系列「問題」。

你不能把數組放入Perl中的散列,這隻能用於數組引用。所以當你用你的foreach迭代散列(ref)時你需要解引用它。

foreach my $issues (@{ $response->{'issues'} }) 
{ 
    print STDERR Dumper($issues->{'key'}); 
} 

因爲你將會得到每次迭代一個問題,您應該重命名$issues$issue這樣你就不會得到以後混淆。

+0

@cbg感謝您的編輯。你當然是對的。 – simbabque