問題是我有一個數組,它具有鍵值對作爲數組中的元素,我必須將它們分解成哈希中的key =>值對。如何將數組[key1,val1]映射到perl中的散列{key1 => val1}?
我在第一次嘗試的作品,但我認爲它相當混亂 - 我得陣列的所有其他元素,然後篩選通過找到接受鍵創建哈希與
my $HASH;
my $ARRAY = [ key1, val1, key2, val2, __key3__, val3, __key4__, val4 ];
my @keys = map{ $ARRAY[ $_*2 ] } 0 .. int($#ARRAY/2);
my @vals = map{ $ARRAY[ $_*2+1 ] } 0 .. int($#ARRAY/2);
my $i = 0;
#filter for keys that only have __key__ format
for $key (@keys){
if($key && $key =~ m/^__(.*)__$/i){
$HASH{$1} = $vals[$i];
}
$i++;
}
# only key3 and key4 should be in $HASH now
我發現這個sample code我認爲這是接近我正在尋找,但我無法弄清楚如何實現一個數組類似的東西,而不是在一個文本文件的行迭代:
$file = 'myfile.txt'
open I, '<', $file
my %hash;
%hash = map { split /\s*,\s*,/,$_,2 } grep (!/^$/,<I>);
print STDERR "[ITEM] $_ => $hash{$_}\n" for keys %hash;
可以在任何的你perl guru在那裏幫助我理解做到這一點的最佳方式?即使我可以以某種方式將所有元素加入到一個字符串中,然後再將每個第二個空白符號分開 - 這也可能起作用,但是現在我被卡住了!
'$ ARRAY = [...]'和'$ ARRAY [...]'是指兩個不同的變量! – mob
@nodebunny =>添加'使用警告;嚴格使用;'放在所有程序的頂部,以捕捉像上面那個'mob'筆記這樣的問題。 –
謝謝我使用麋,所以它已經在那裏! – qodeninja