On Mon, Jul 06, 2009 at 05:06:03PM +0100, Nicholas Clark wrote: > but Generic::Base::ClassWithTimeout has done something funky to wrap &run > in a routine that does the eval block/alarm/$SIG{ALARM} handler? > Basically, the fun is that I'd like to do something equivalent to invert the > order of inheritance, such that the parent's &run seems to be called first, > and it can "SUPER" delegate to its child.
You can't use inheritance for this. You need to detect whenever a class is loaded - perhaps by doing some Voodoo in @INC or %INC. Then to figure out which classes inherit from your class, use Class::CanBeA, and then Hook::LexWrap or something similar to wrap its run() method. It sounds like this would be terribly fragile though. eg, if run() is AUTOLOADed or otherwise defined at runtime. -- David Cantrell | London Perl Mongers Deputy Chief Heretic Hail Caesar! Those about to vi ^[ you!