in reply to (tye)Re3: How can I call other objects from my object during DESTROY
in thread How can I call other objects from my object during DESTROY

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

  • Comment on Re: (tye)Re3: How can I call other objects from my object during DESTROY

Replies are listed 'Best First'.
(tye)Re5: How can I call other objects from my object during DESTROY
by tye (Sage) on Jul 11, 2001 at 07:45 UTC

    Please also try changing your internal object from a package global to a lexical (my) variable with file scope and see if that fixes the problem even when you use the functional interface.

            - tye (but my friends call me "Tye")