考慮下面的代碼:刪除密鑰/ val哈希對留下密鑰。爲什麼?
$foo{'bar'}->{'lala'} = "lol";
delete($foo{'bar'}->{'lala'});
當我運行這段代碼,我預計「拉拉」條目被完全消失(key和value)。但是,當我使用Dumper轉儲這個散列時,它看起來像這樣:
$foo => {
'bar' => {
'lala' => {}
}
}
爲什麼關鍵在後面?我想要刪除值和密鑰。以下是實際的相關代碼和結果。
代碼用於刪除:
delete($state->{calls}->{$call_id});
輸出前:
$VAR1 = bless({
'packet' => {},
'calls' => {
' 1330718109168
' => {
'eventcount' => 0,
'caller_id_name' => '
',
' channels' => [
' 1330718109168
'
],
'entered_time' => 1330718109,
'caller_id_num' => '
'
},
' 1330718097167
' => {
'eventcount' => 277,
'caller_id_name' => ' Cell Phone NY
',
'channels' => [
' 1330718097167
'
],
'queue' => ' TEST_HUD_AMIEV
',
'entered_time' => 1330718097,
'caller_id_num' => ' 5555555
'
}
}, 'main');
後輸出:
$VAR1 = bless({
'packet' => {},
'calls' => {
' 1330718097167
' => {},
' 1330718109168
' => {}
}, 'main');
請發佈確切的程序和輸出。你顯示的程序將刪除'lala'鍵。你所顯示的輸出並不完全是Data :: Dumper所能產生的。 – 2012-03-02 19:51:56
增強了問題以獲得更多真實結果,以及我正在使用的真實刪除語句。 – dmarra 2012-03-02 20:10:31
The BEFORE snippet is missing a'}' – 2012-03-02 21:04:49