in reply to Perl DBI: Overloading statement handle

Just write a subclass to the class on which you call the ->prepare method. In the subclass, add the prefix to the string, and re-dispatch to superclass method with $self->SUPER::prepare(@arguments)

Then in the new_dbh sub you can rebless the created statement handle with bless.

This should work, but it's an ugly hack, and should only temporarily used for debugging.

Update: here's a code example (untested, but should work roughly like this):

#!/usr/bin/perl use strict; use warnings; { package My::DBI::st; our @ISA = qw(DBI::st); sub prepare { my ($self, $str, @args) = @_; $self->SUPER::prepare("/* userid $ENV{USER} */ $str", @args); } } sub new_dbh { ... my $dbh = DBI->connect(...); return bless $dbh, 'My::DBI::st'; }
Perl 6 - links to (nearly) everything that is Perl 6.

Replies are listed 'Best First'.
Re^2: Perl DBI: Overloading statement handle
by sherab (Scribe) on Nov 08, 2010 at 19:56 UTC
    Wow! Now that was totally a nice follow up! I also understand this more because of it, many many thanks! J