[Moscow.pm] Interesting behavior of 'delete' function

Alessandro Gorohovski an.gorohovski на gmail.com
Чт Ноя 29 02:14:27 PST 2018


чт, 29 нояб. 2018 г. в 13:06, Andrei <andrei.protasovitski на gmail.com>:

> Всё верно.
>
> По шагам:
>
> delete $a{11}{21,24}{31}
>
> 1. Сначала ищется элемент $a{11}. Он есть, и он ссылка на хэш.
> 2. Дальше в это подхэше ищется элемент $a{11}{21,24}. Список (21,24)
> преобразуется в строку "21$;24". Такого элемента не находится, поэтому
> из-за autovivification, включённого по умолчанию, этот элемент создаётся и
> его значение устанавливается в undef.
> 3. Далее ищется элемент $a{11}{21,24}{31}. Его нет, поэтому
> значением $a{11}{21,24} становится ссылка на хэш, в котором снова
> из-за autovivification создаётся элемент с ключом 31 и значением undef.
> 4. И только после этого delete удаляет только что созданные элемент и
> возвращает его значение undef.
>
> Элемент, созданный на шаге 2, никуда не девается, вот он там и сидит,
> память занимает, программистов пугает.
> :)
>

Да, Андрей, это всё верно вы представили/объяснили
:)
Подобную ситуацию пожалуйста посмотрите тут:
https://www.youtube.com/watch?v=ZIig5fgp7nY
----------- следующая часть -----------
Вложение в формате HTML было извлечено…
URL: <http://mail.pm.org/pipermail/moscow-pm/attachments/20181129/6d8541fd/attachment.html>


Подробная информация о списке рассылки Moscow-pm