$a = {b=>{c=>1}}; # set up ref
$b = $a->{b}; # ref the ref
$b .= (d=>1,e=>1); # where we want to assign multiple key/val at once
在它的結束$a
應該是這樣的:的Perl:如何推鍵/值對到hashref和仍然保留的參考
{ 'b' => { 'c' => 1, 'd' => 1, 'e' => 1 } };
在它$b
結束應該看起來像:
{ 'c' => 1, 'd' => 1, 'e' => 1 }
注:這將是一樣的做:
$b->{d} = 1;
$b->{e} = 1;
$b = { %$b, d=>1, e=>1 };
是不希望的,因爲它創造的$a
副本,並失去了參考。
是的,我在詢問之前看過perldata,但找不到任何具體的東西 - 我很高興你能從中解讀出某些東西。坦率地說,我很驚訝'%{$ b} =(%{$ b},d => 1,e => 1);'工作了(它仍然對所引用的'$ a'應用了更改) – vol7ron 2012-08-10 14:01:59
關於hashref片幫助我意識到' - >'不是必需的。使用'$ _'作爲hashref,我嘗試了'@ _-> {qw(key1 key2)}'這產生了一個神祕的錯誤信息:'不能使用未定義的值作爲HASH引用' $ _} {qw(key1 key2)}' – Palec 2014-11-30 19:58:01
@Palec這可能不會影響你在做什麼,但是在你的例子中'@ _'和'@ $ _'有兩個不同的含義 – vol7ron 2014-12-01 14:55:28