我正在构建一个散列,其中与标量相关联的键不一定是唯一的.期望的行为是,如果键是唯一的,则值是标量.如果密钥不是唯一的,我希望该值是与密钥关联的标量的数组引用.由于哈希是迭代构建的,我不知道密钥是否是提前唯一的.现在,我正在做这样的事情:
if(!defined($hash{$key})){ $hash{$key} = $val; } elseif(ref($hash{$key}) ne 'ARRAY'){ my @a; push(@a,$hash{$key}); push(@,$val); $hash{$key} = \@a; } else{ push(@{$hash{$key}},$val); }
有更简单的方法吗?