I wish Perl would at least have an option to, during clean up, decrement the ref count on all globals, destroying things in the normal manner, and after that, would then go sweep up anything that was left over.
I think that this has been fixed, to some extent, in 5.7.2. The following is from the Changes file.
[ 7991] By: jhi on 2000/12/05 15:52:34
Log: Subject: Re: [PATCH] The largest hoax of all times?
From: Ilya Zakharevich <firstname.lastname@example.org>
Date: Tue, 5 Dec 2000 00:40:25 -0500
Fix the unpredictable order of DESTROYs.
The fix was also discussed in the p5p digest
Nevertheless, on 5.7.2 I still have problems with Perl objects that contain sub-objects which are destroyed too early. However, I am not sure if this is part of the same problem.