我有一个哈希值,在最后一级,我希望每个值都被附加 -不更新- 如果该值已经存在。最好的方法是什么?我正在考虑将值作为列表,但这可能不是最有效的方法......
这是我到目前为止的地方:
#!/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;
请注意,此代码使用 value 更新最后一级的值$line[0]
,但如果键$line[4]
已经存在(意味着它已经有一个先前的 value $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'}
}