3

長い/冗長/間違った方法でこれを行う前に、この質問をしています。

私はパールを使用しています。私は2つのハッシュを持っています。1 つはデフォルト値を含み、場合によってはデフォルト値をオーバーライドする 1 つのユーザー定義値が含まれます。

これらのハッシュを結合する最も簡単な方法は何ですか。ただし、ユーザー値を選択した同じキーに対して、デフォルト値とユーザー定義値の両方があります。

$defaults = {
 type => paper,
 number => 3
};

 $user_defined = {
 number => 5
};

必要な最終結合出力/ハッシュは次のとおりです。

$result = {
    type => paper,
    number => 5,
}
4

3 に答える 3

11

私が使う

my $result = { %$defaults, %$user_defined };
于 2013-04-24T17:00:40.917 に答える
4

明らかな解決策は正しいものです:

$result = { %$defaults, %$user_defined };
于 2013-04-24T17:01:11.527 に答える
4

提供された回答は、ハッシュが単純なスカラー値を持っている (つまり、1 レベルの深さしかない) 場合に有効です。ハッシュに他のハッシュと配列を任意の深さまで含めることができる場合は、情報をマージするためのオプションとしてHash::Mergeを調べてください。

于 2013-04-24T17:20:22.133 に答える