撒拉嘿哟木头 2008-12-08 16:13 采纳率: 100%
浏览 210
已采纳

如何在 Perl 中组合 hash?

What is the best way to combine both hashes into %hash1? I always know that %hash2 and %hash1 always have unique keys. I would also prefer a single line of code if possible.

$hash1{'1'} = 'red';
$hash1{'2'} = 'blue';
$hash2{'3'} = 'green';
$hash2{'4'} = 'yellow';

转载于:https://stackoverflow.com/questions/350018/how-can-i-combine-hashes-in-perl

  • 写回答

4条回答 默认 最新

  • perhaps? 2008-12-08 16:17
    关注

    Quick Answer (TL;DR)

    
        %hash1 = (%hash1, %hash2)
    
        ## or else ...
    
        @hash1{keys %hash2} = values %hash2;
    
        ## or with references ...
    
        $hash_ref1 = { %$hash_ref1, %$hash_ref2 };
    
    

    Overview

    • Context: Perl 5.x
    • Problem: The user wishes to merge two hashes1 into a single variable

    Solution

    • use the syntax above for simple variables
    • use Hash::Merge for complex nested variables

    Pitfalls

    • What do to when both hashes contain one or more duplicate keys
      • Should a key-value pair with an empty value ever overwrite a key-value pair with a non-empty value?
      • What constitutes an empty vs non-empty value in the first place? (eg. undef, empty string, false, falsy ...)
      • (Note: the original question rules out this scenario, but it is an important one to consider)

    See also


    Footnotes

    1 * (aka associative-array, aka dictionary)

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 MATLAB动图的问题
  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名