I am _so_ busy. package CBI::callbacks;
sub import{ my $caller = caller(); while(my($name,$thingy) = each %{"${caller}::"}){ $name =~ /hook_(.+)/ or next; ... }; }; On 11/3/05, Tim Bunce <[EMAIL PROTECTED]> wrote: > Are you volunteering? > > Tim. > > On Thu, Nov 03, 2005 at 01:24:21PM -0600, David Nicol wrote: > > > "'connect.cached.new' => [\&pre, \&post]" syntax so that I could do > > > > If I understand correctly, the QPSMTPD people have just implemented > > self-registering > > callbacks in modules by standardizing the names of the callbacks and > > letting package > > introspection find them all. The names are hook_* where * is one of > > the times that > > there is a hook for. > > > > Using that naming convention, a module would register it callback with the > > DBI > > framework by merely having a function called something like > > > > sub hook_connect_cached_new_pre{ ... } > > > > Perhaps the import function invoked by > > > > use DBI::callback_hooks; > > > > could inspect the functions defined in its caller()'s package and > > register what it > > finds there with the calling-back mechanism. > > > > Just an idea -- I do not know if this approach would be better or > > worse than what > > is currently being done, or even if it is the same as what is > > currently being done -- > > but in my opinion having multiple levels of naming > > > > > "'connect.cached.new' => [\&pre, \&post]" > > > > is going to be a hassle compared with a single level of naming that > > gets as detailed as it needs. > > > > connect_cached_new_pre => \&pre, > > connect_cached_new_post => \&post; > > > > In the proposal at the top of this e-mail, presuming you have the pre and > > post > > subs already written and don't want to touch them, the registration of them > > could be implied with something like > > > > INIT{ > > *DBIhook_connect_cached_new_pre = \⪯ > > *DBIhook_connect_cached_new_post = \&post; > > } > > > > if you don't want to just change their names. > -- David L Nicol "Green blanket" -- Aurora