如何在不使用循环的情况下在Perl中连接两个哈希?

biz*_*nez 13 perl hash

如何在不使用循环的情况下将散列a附加到Perl中的散列b?

bdo*_*lan 32

如果你的意思是采用他们的数据联合,只需:

%c = (%a, %b);
Run Code Online (Sandbox Code Playgroud)

  • 在这种情况下,他们应该在CPAN上查看Hash :: Merge (5认同)
  • 它适用于我:"%a =('a'=>'b','c'=> 1);%b =('c'=>'d');%a =(%a,%b ); print join(',',map {"'$ _'=> \"$ {a {$ _}} \""}键%a),"\n";" 来自%b的具有相同键的项优先,但来自%a的其他项在联合之后出现. (3认同)

out*_*tis 24

您还可以使用切片将一个哈希合并到另一个哈希:

@a{keys %b} = values %b;
Run Code Online (Sandbox Code Playgroud)

请注意,%b中的项目将覆盖%a中具有相同键的项目.

  • 对于额外的功劳,在a和b中使用散列引用,我们会执行@ {$ a} {keys%$ b} = values%$ b; (5认同)
  • 我希望这比其他回复更有效,因为那个也为已经存在的项重新创建了哈希,而这个只是添加了新项的键.如果%a中存在多个项目,则与%b相比,差异可以是可观的. (2认同)