处理perl哈希中的多个值

时间:2014-05-28 10:37:34

标签: perl hash

我在%ARGS中传递了一个perl哈希值。我必须实现这样的功能,其中如果对于所需的最小密钥集(比如key1,key2,key3,key4,key5),哈希中有多个值,那么我需要获取第一个值并用最小集合填充哈希值钥匙。

目前我有。

while (my ($key, $value) = each(%ARGS)) {
    #check if key is equal to the keys from the set.
    if (ref($value) ) {
          #means its a nested key value pair.
          extract first value and put it for the key 

我该如何建立。任何指针都很有用

1 个答案:

答案 0 :(得分:0)

听起来你只需要创建一个默认值的哈希值。

您可以使用该哈希初始化主哈希以确保每个密钥都存在。然后,您可以使用相同的哈希将%ARGS哈希限制为只有您希望它拥有的密钥:

my %def_args = (
    key1 => '',
    key2 => '',
    key3 => '',
    key4 => '',
    key5 => '',
);

# Selectively Initialize Args with Defaults:
%ARGS = (%def_args, %ARGS);

# Restrict ARGS to just default keys
delete @ARGS{grep {! exists $def_args{$_}} keys %ARGS};