I ran into similar problems for my module WWW::Search. No, out-of-the-box you can not re-use an HTML::TreeBuilder object to parse a new file. BUT you can use the following code as a "reset". I.e. call parse, muck with the tree, do the following four lines, and call parse again. This does the same as new() but without changing the store_comments, store_pis settings, etc:
$self->{'_head'} = $self->insert_element('head',1); $self->{'_pos'} = undef; # pull it back up $self->{'_body'} = $self->insert_element('body',1); $self->{'_pos'} = undef; # pull it back up again The reason you can't re-use your HTML::Element is because it's a reference, and when the tree gets deleted, your Element gets deleted right along with it. - - Martin Thurn