我在主文件中的某处定义了一个简单的哈希
our %translations = (
"phrase 1" => "translation 1",
# ... and so on
);
Run Code Online (Sandbox Code Playgroud)
在另一个文件中,我想添加更多翻译.也就是说,我想做这样的事情:
push our %translations, (
"phrase N" => "blah-blah",
# ....
"phrase M" => "something",
);
Run Code Online (Sandbox Code Playgroud)
当然这段代码不起作用:push不适用于哈希.所以我的问题是:将一个值的哈希值插入到现有哈希中的简单而优雅的方法是什么?
我不想诉诸
$translations{"phrase N"} = "blah-blah";
# ....
$translations{"phrase M"} = "something";
Run Code Online (Sandbox Code Playgroud)
因为在Perl中你应该能够在你的代码中没有太多重复的情况下做事情......
Tud*_*tin 16
%translations = (%translations, %new_translations);
Run Code Online (Sandbox Code Playgroud)
您可以使用键和值函数分配哈希切片.只要在调用之间没有修改散列,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",
};
Run Code Online (Sandbox Code Playgroud)
您可以分配给哈希切片:
@translations{@keys} = @values;
Run Code Online (Sandbox Code Playgroud)
或使用其他哈希的数据:
@translations{keys %new} = values %new;
Run Code Online (Sandbox Code Playgroud)
%translations = (
"phrase N" => "blah-blah",
# ....
"phrase M" => "something",
%translations
);
Run Code Online (Sandbox Code Playgroud)