in reply to Perl segfault and global destruction problem

If I'm not mistaken, those objects are stored internally by a hash table, so any tweaks to this would change the order in which they are destroyed. If you don't explicitly blow them away (and you don't) then you're subject to the joys of whatever order they are in when they come out of the hash.

Your problem is that your subnodes are destroyed before the parent node, but the parent still has a link to them. When the parent goes away, the ref count for the subnodes drops to 0 and then they get destroyed. But since they've already been destroyed, there is a problem.

Putting these two together the solution is to walk your tree, and delete the links between the nodes. That breaks the interdependancies and should get you on your way.

Or haven't had enough caffeine yet, in which case you're on your own.

- doug

PS: I have no idea what those IO::Handles are doing there.