Date sent: Mon, 9 Jul 2012 12:36:27 +0200 From: Michael Ludwig <[email protected]> To: [email protected] Subject: Callbacks registered on class, not instance?
> There's a huge perl process running, and we don't have access to the > source code. We only have access to a loader script, which starts the > entire process. > > This process is doing lots of SQL via DBI. We'd like to change that SQL > a little bit. This can be done via DBI callbacks as described in the > manual: > > http://search.cpan.org/~timb/DBI-1.622/DBI.pm#Callbacks > > Callbacks are registered on DBI object instances. When the process is > started we don't have access to handles, they have not been created yet. > > However, in theory, we could load the DBI module in the loader script > so the DBI code would be there, and then we could register callbacks on > the *class*, not on the *instance*, and they would be called *from* the > instance. In other words, global callbacks. > > In practice it looks like this isn't supported. Or is it? > > Michael Hack it. Something like use DBI; { my $old_connect = \&DBI::connect; *DBI::connect = sub { my $connection = $old_connect->(@_) or return; do anything you like with the connection return $connection; } } Jenda ===== [email protected] === http://Jenda.Krynicky.cz ===== When it comes to wine, women and song, wizards are allowed to get drunk and croon as much as they like. -- Terry Pratchett in Sourcery
