[CDBI] Class::DBI and DESTROY

Perrin Harkins perrin at elem.com
Thu Nov 10 14:16:44 GMT 2005


On Thu, 2005-11-10 at 13:15 +0000, Steven Mackenzie wrote:
> I have tried to add some new methods to one of my Class::DBI classes,
> but they require state to be preserved for each instance. I didn't want
> to just stash my state in the cdbi object hash (it didn't work anyway),
> so I'm using a variation of "Perl Best Practices" inside out classes.

I recommend you go back to shoving thing in the Class::DBI hash.  It's a
lot easier and you are writing something for a specific version of
Class::DBI on your own system.  Of course if you were planning to make
this into a CPAN module, you should think twice about doing it this way,
since other people will have different versions.

> But DESTROY is being
> called far more often than I expected.

This is the opposite of the complaint that most people have with Perl --
that DESTROY is never called.

> Can anyone share some insight in to my problem (why is DESTROY being
> called so often?), or offer a better approach for me?

Maybe cdid is not really a unique key of your class, so one CD's DESTROY
cleans up another one?  Maybe you have a scoping problem with %
card_writer_of.  I'm pretty confident that DESTROY is not being called
on objects that are still in scope.

- Perrin





More information about the ClassDBI mailing list