Ahh I understand now. Causing the DESTROY to be called at scope-end rather than global destruction time forces the "correct" order of destruction.
It turns out that my module has a hybrid OO/functional usage (like CGI.pm); when used in functional mode, it generates/keeps an internal object to work with (which is, of course global with respect to the package, and is GC'ed at exit). As you and others have noted, in fact, I have no problems when I use the module in true OO mode.
I have (temporarily) solved my problem by checking in my DESTROY whether the secondary objects have been destroyed or not - if they have, then I recreate them afresh before calling the methods I need. Ugly, but functional without requiring the user to run a clean_up() method (a la $dbh->disconnect()) before exiting.
Thanks (again) for all your (and the other PerlMonks') help!
-Aaron
In reply to Re: (tye)Re3: How can I call other objects from my object during DESTROY
by Anonymous Monk
in thread How can I call other objects from my object during DESTROY
by amackey
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |