"HTML-Element" sucks

Perl はオブジェクトのメモリ管理に参照カウント方式をとっている。
つまり、オブジェクトが参照されている数、が0になったらオブジェクトを解放する。
この方式には、循環参照があるオブジェクト集合を解放できないという問題がある。
循環参照のあるオブジェクトの解放は、プログラマがやらなければならない。

HTMLのツリーをそのまま表現したクラスである HTML::Element は、
各オブジェクトが親と子のエレメントへの参照を持っている。
したがって HTML::Element のオブジェクトはすべて、明示的に解放しなければならない。

http://search.cpan.org/~sburke/HTML-Tree-3.18/lib/HTML/Element.pm

because a parent element always holds references to its children, and its children elements hold references to the parent, so no element ever looks like it's not in use. So, to destroy those elements, you need to call $h->delete on the parent.