To track this down better, maybe you can dump the object(s) in question at strategic places of the lifetime of your program. Maybe you get lucky and find that no_DESTROY gets reset/lost somewhere or a place where another object holds on too long to the object in question.
Note that closures are notorious for holding on surprisingly long to objects:
sub make_frobnitzer { my( $self )= @_; $self->{on_error}= sub { $self->error_on_frobnitz( @_ ); } }
In the above case, $self will live until global destruction, because the on_error subroutine closes over $self.
In reply to Re^3: Conditional DESTROY
by Corion
in thread Conditional DESTROY
by Ralesk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |