> "'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.

Reply via email to