私はperlを初めて使用し、tsvからハッシュのハッシュを構築しようとしています。私の現在のプロセスは、ファイルを読み込んでハッシュを作成し、それを別のハッシュに挿入することです。
my %hoh = ();
while (my $line = <$tsv>)
{
chomp $line;
my %hash;
my @data = split "\t", $line;
my $id;
my $iter = each_array(@columns, @data);
while(my($k, $v) = $iter->())
{
$hash{$k} = $v;
if($k eq 'Id')
{
$id = $v;
}
}
$hoh{$id} = %hash;
}
print "dump: ", Dumper(%hoh);
これは以下を出力します:
dump
$VAR1 = '1234567890';
$VAR2 = '17/32';
$VAR3 = '1234567891';
$VAR4 = '17/32';
.....
私が期待するものの代わりに:
dump
{
'1234567890' => {
'k1' => 'v1',
'k2' => 'v2',
'k3' => 'v3',
'k4' => 'v4',
'id' => '1234567890'
},
'1234567891' => {
'k1' => 'v1',
'k2' => 'v2',
'k3' => 'v3',
'k4' => 'v4',
'id' => '1234567891'
},
........
};
$hoh{$id} = %hash;
私の限られた理解は、 %hash への参照に挿入するときですか? 私は何を間違っていますか?また、列とデータ配列をキー、値のペアとして %hash オブジェクトに使用するより簡潔な方法はありますか?
-前もってありがとう、ニル