2015-04-14 39 views

回答

6

你想哈希的數組,所以你可以使用map改造@values陣列,

my @keys = qw/foo bar baz/; 
my @values = ([1,2,3], [4,5,6]); 
my @AoH = map { my %h; @h{@keys} = @$_; \%h } @values; 
+0

'我@AoH = {地圖我的$ H; @ $ h {@keys} = @ $ _; $ h} @values;'同樣的事情使用$ h hashref。 –

+0

我最初希望避免使用一個命名的臨時變量,但現在看到它不是太多額外的代碼。 – gcbenison

+0

List :: Moreutils可以做到這一點,如果你不想使用額外的變量。 –

2
use List::MoreUtils qw(zip); 

my @keys = qw(foo bar baz); 
my @values = ([1,2,3], [4,5,6]); 
my @hashes = map +{ zip @keys, @$_ }, @values; 
1
use List::MoreUtils qw(zip); 

my @keys = qw(foo bar baz); 
my @values = ([1,2,3], [4,5,6]); 
my @hashes = map { { zip @keys, @$_ } } @values; 
+2

這是@ Oesor已刪除帖子的固定版本。如果他取消刪除他的帖子並讓我知道,我會刪除我的。 – ikegami

+0

這沒什麼大不了的 - 今天早上我沒有足夠的咖啡,並且刪除了我的代替修復它。 – Oesor

相關問題