perl - 如何将哈希插入到 Perl 中的哈希中

标签 perl hash

我在主文件的某处定义了一个简单的哈希

our %translations = (
    "phrase 1" => "translation 1",
    # ... and so on 
    );

在另一个文件中,我想添加更多翻译。也就是说,我想做这样的事情:
push our %translations, (
    "phrase N" => "blah-blah",
    # ....
    "phrase M" => "something",
    );

当然这段代码不起作用:push不适用于哈希。所以我的问题是:将值的散列插入现有散列中的简单而优雅的方法是什么?

我不想诉诸
$translations{"phrase N"} = "blah-blah";
# ....
$translations{"phrase M"} = "something";

因为在 Perl 中,你应该能够在代码中没有太多重复的情况下做事情......

最佳答案

您可以使用 keys 分配给散列切片和 values功能。只要在调用之间没有修改散列,keys将按照与 values 相同的顺序返回键返回值。

our %translations = (
  "phrase 1" => "translation 1",
);

{ # Braces just to restrict scope of %add
  my %add = (
    "phrase N" => "blah-blah",
    "phrase M" => "something",
  );
  @translations{keys %add} = values %add;
}

# Or, using your alternate syntax:
@translations{keys %$_} = values %$_ for {
  "phrase N" => "blah-blah",
  "phrase M" => "something",
};

关于perl - 如何将哈希插入到 Perl 中的哈希中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7511970/

相关文章:

linux - Perk Tk 内存泄漏

java - 在多个输入文件上运行终端程序

c# - 散列密码给出不同的结果

c# - 如何在不将整个文件加载到内存的情况下读取/流式传输文件?

c# - 字符串的不区分大小写的哈希 (SHA)

arrays - Perl,将数组 : adding and removing keys, 的散列添加到数组中,全部在 while 循环中

perl - PDF::API2 是否支持使用压缩的外部参照读取 PDF 1.5+?

linux - 水平组合多个文本文件

javascript - 使用 javascript 检查 url 中的数字?

C# SHA256Managed 如何计算空字节[]的哈希值