Le vendredi 23 août 2013 à 16:25 +0200, David E. Wheeler a écrit : > Oh, you know what? I think this is why the example in the docs and my blog > post puts the callback into a lexical variable, then just passes that > lexical. This is because the params passed to connect_cached(), if they vary > at all, create different connections. You call connect_cached() three times, > and construct the Callbacks hash reference anew each time. So it is different > each time. > > Try this: > > my $cb = { > 'connect_cached.reused' => sub { print "reused!!!"; return; }, > }; > for my $test (1..3) { > my $cached_dbh = MyApp::SQLite->connect_cached( > "dbi:SQLite:dbname=$dbfile", '', '', > { > RaiseError => 1, > PrintError => 0, > Callbacks => $cb, > } > ); > ... > } >
That did the trick! Congratulations for finding it. I still can't use connect_cached.new for my original purpose, which was to send an SQL query setting the correct datestyle for a new connection; the error returned is : Can't call method "do" on an undefined value at /home/lib/Aspro/db_handle.pm which seems logical, since DBI.pm's documentation says : "connect_cached.*" callbacks are invoked before connect_cached() has applied the connect attributes But I found a middle ground (setting the datestyle once at login time, it is then kept by the cached connection) Thank you for your help. -- Salutations, Vincent Veyron http://marica.fr/ Gestion des contrats, des contentieux juridiques et des sinistres d'assurance