我是使用 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 对象中吗?
-提前致谢,尼鲁