Если бы вы использовали strict
и warnings
, вы бы увидели:
Ссылка найдена там, где ожидается чётный список
Строки A и Bне делай то, что ты думаешь, они делают.Они фактически присваивают в качестве ключа строковую версию ссылки на пустой хеш, а undef в качестве его значения.Даже если хеш теперь почти пуст, память не помечается как повторно используемая, поскольку вы не использовали для этого надлежащий оператор.
Попробуйте использовать один из следующих операторов в строках A и B:
undef %var; # this one
%var = (); # or this one