【发布时间】:2014-06-16 14:54:18
【问题描述】:
我有一个哈希值,在最后一级,我希望每个值都被附加 - 不更新 - 如果该值已经存在。最好的方法是什么?我正在考虑将值作为列表,但这可能不是最有效的方法......
这是我到目前为止的目标:
#!/usr/local/bin/perl
use strict;
use warnings;
use Data::Dumper;
my $dir='D:\';
open my $data,"<","$dir\\file.txt";
my (@selecteddata,@array,%hash);
while (<$data>) {
chomp $_;
my @line= split "\t";
$hash{$line[1]}{$line[2]}=$line[0];
warn Dumper \%hash;
}
close $data;
注意,这段代码用值$line[0]更新最后一级的值,但是如果键$line[4]已经存在(意思是它已经有一个以前的值$line[0])我希望这个值被附加而不是更新了。
因此,理想情况下,对于以下(制表符分隔)列表:
a1 b1 c1
a2 b2 c2
a3 b3 c3
a4 b4 c4
a5 b4 c4
哈希看起来像这样 - 我不知道 a4 和 a5 的分组应该是什么样子,所以只要将它们分组就可以了:
{
'b1' => {'c1' => 'a1'},
'b2' => {'c2' => 'a2'},
'b3' => {'c3' => 'a3'},
'b4' => {'c4' => 'a4, a5'}
}
【问题讨论】:
标签: perl hash hash-of-hashes