我在%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
我该如何建立。任何指针都很有用
答案 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};