чт, 29 нояб. 2018 г. в 13:06, Andrei <[email protected]>:

> Всё верно.
>
> По шагам:
>
> 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
-- 
Moscow.pm mailing list
[email protected] | http://moscow.pm.org

Ответить