Hue-Bond has asked for the wisdom of the Perl Monks concerning the following question:
In a program I'm writing, I want to share the DBI database handler between several modules. That way, the functions in that modules could access the database directly. Is this the right approach? How could it be achieved?. I've thought of something like:
package Hue::SQL; sub open { return DBI->connect blah blah; } sub close { $main::dbh->disconnect; } ## <-- here is it: use + $main::dbh package Hue::Foo; sub do_something { my $data = shift; $main::dbh->do ("sql query using \$data"); ## <-- again } package main; use Hue::SQL; use Hue::Foo; $dbh = Hue::SQL::open; Hue::Foo::do_something ($data);
But this doesn't seem very clean to me. Another approach is to pass the $dbh as an argument to close(), do_something() and every function that needs it, but I'm not happy with that either. I thought about the possibility of all modules importing $dbh from main, like use does, so $Hue::SQL::dbh, $Hue::Foo::dbh and $main::dbh would be the same, using references or something. Is this feasible? Any other idea?
--
David Serrano
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Sharing DBI handler between several modules
by gellyfish (Monsignor) on Apr 28, 2006 at 13:05 UTC | |
|
Re: Sharing DBI handler between several modules
by derby (Abbot) on Apr 28, 2006 at 13:03 UTC | |
|
Re: Sharing DBI handler between several modules
by kwaping (Priest) on Apr 28, 2006 at 15:02 UTC | |
|
Re: Sharing DBI handler between several modules
by pajout (Curate) on Apr 29, 2006 at 15:51 UTC | |
|
Re: Sharing DBI handler between several modules
by mattr (Curate) on May 01, 2006 at 02:09 UTC |