将新值添加到数组哈希的简写

时间:2011-08-07 15:03:52

标签: perl

下面是我想在某种循环中构建数组哈希时必须编写的代码块的概括。

#get value and key that I want to use
my $value = getvalue();
my $key = getKey();

#add value to hash using key
if($hash_of_arrays{$key}){
    push(@{$hash_of_arrays{$key}}, $value);
}
else{
    $hash_of_arrays{$key} = [$value];
}

为这样一个简单的任务编写if语句非常繁琐,但需要完成它,因为在哈希中未定义其键时推送一个值会导致问题。我只是想知道是否有任何简写来写这个 - 我不必写三次$hash_of_arrays{$key}

2 个答案:

答案 0 :(得分:14)

push @{ $HoA{$key} }, $value;效果非常好,是推荐的事情。如果您使用它的代码有“问题”,那么请询问这些问题。

答案 1 :(得分:0)

直观地说,当你发现自己重复代码时,为你做一个函数或一个对象。

但是,对于这种特定情况,您可能需要查看Perl Recipe 13.15: Tie Example: Make a Hash That Always Appends。您只需为哈希值分配一个值,它就会自动将其附加到底层数组。