[Moscow.pm] Interesting behavior of 'delete' function
Alessandro Gorohovski
an.gorohovski на gmail.com
Ср Ноя 28 11:04:41 PST 2018
Приветствую Уважаемое Perl-сообщество,
Возможно это покажется тривиальным/хорошо известным поведением
функции delete применительно к хешам, но оставлю на всякий случай.
Итак имеется хеш %a:
print Dumper \%a;
$VAR1 = {
'11' => {
'24' => {
'31' => 41
},
'23' => {
'33' => 43
},
'22' => {
'32' => 42
},
'21' => {
'31' => 41
}
}
};
из которого надо удалить, к примеру несколько внутренних элементов,
например: $a{11}{21}{31} и $a{11}{24}{31}
Выполняем :
delete $a{11}{21,24}{31}
но удаления не происходит :(
а добавляется новый внутренний загадасный элемент:
print Dumper \%a;
$VAR1 = {
'11' => {
'23' => {
'33' => 43
},
'22' => {
'32' => 42
},
'21' => {
'31' => 41
},
'24' => {
'31' => 41
},
'21 24' => {}
}
};
Или например так:
delete $a{11}{keys %{$a{11} } }{31}
Опять добавляется новый элемент.
print Dumper \%a;
$VAR1 = {
'11' => {
'5' => {},
'21' => {
'31' => 41
},
'23' => {
'33' => 43
},
'22' => {
'32' => 42
},
'21 24' => {},
'24' => {
'31' => 41
}
}
};
Как вы думаете в чём причина такого поведения delete
?
С уважением,
Александр.
----------- следующая часть -----------
Вложение в формате HTML было извлечено…
URL: <http://mail.pm.org/pipermail/moscow-pm/attachments/20181128/da8e68bf/attachment.html>
Подробная информация о списке рассылки Moscow-pm