考虑下面的代码:删除密钥/ 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