Нет;показанная операция undef
не освободит всю память.
Это было легко.Что сложнее: «Как освободить память?», И я думаю, что один ответ:
undef $class->{'key1'}->{'key2'}->{"music"};
Другой (это Perl!) Может быть:
delete $class->{'key1'}->{'key2'}->{"music"};
В некоторых случаях подсчет ссылок в Perl может обнаружить что-то еще, также используя некоторое значение, и в этом случае это значение не будет выпущено, пока не останется никаких ссылок.Однако, если в многоуровневом хеше есть только ссылки, память должна быть освобождена для повторного использования.