I've been hunting through my code, eventually coming to a bug where I had a closure that referred to itself, as well as an object of mine. This prevented my object's DESTROY handler from working, causing bugs.
I've been playing with Test::Memory::Cycle, but unfortunately that won't solve this particular problem. my $hash = {}; $hash->{object} = $some_object; $hash->{cycle} = $hash; No amount of cycle checking in $some_object is going to find this cycle. If the cycled object is one like this; containing the only reference to itself, then almost by definition there's nothing that could be walked for memory cycles. This is where I consider a refcount-assertion module instead; something I could do this with: use Test::Refcount; my $object = Some::Class->new( ... ); has_onlyref( $object, '$object has only 1 reference' ); # Synonym for has_refcount( $object, 1, '$object has only 1 reference' ); There's a very simple implementation for this I can think of; using: use B qw( svref_2object ); sub refcount { my $sv = svref_2object( $_[0] ); return $sv->REFCNT - 1; # Because @_ refers to it too } Does this sound good? -- Paul "LeoNerd" Evans [EMAIL PROTECTED] ICQ# 4135350 | Registered Linux# 179460 http://www.leonerd.org.uk/
signature.asc
Description: PGP signature