Рассмотрим следующий код:
$foo{'bar'}->{'lala'} = "lol";
delete($foo{'bar'}->{'lala'});
Когда я запускаю этот код, я ожидаю, что запись "lala" полностью исчезнет (ключ и значение). Однако, когда я использую 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' );