This works for me:
#!/usr/bin/perl -w use strict; use DBI; my $dbh = connect_db(); print ">>$dbh<<\n"; query($dbh); sub connect_db { my $dbh = DBI->connect('DBI:mysql:dbname', 'user', 'pass') || die "can't open DB: $DBI::errstr\n"; return $dbh; } sub query { my $handle = shift; my $sth = $dbh->prepare('Select id FROM page_data'); my $id; $sth->execute(); $sth->bind_columns(\$id); while ($sth->fetch()) { print "\tFound id $id.\n"; } $sth->finish(); }
(Database specific stuff is taken from a project I'm working on.)

However, I'd be more likely to do what you suggest, adding the DB handle to $self and adding wrapper methods to the class to operate on the handle and return data. Why not abstract all the way and make an OO interface around the database object? That way, you don't have to pass it to different objects, you just have one object that knows how to get at your data.


In reply to Re: passing DBI database handles to subroutines by chromatic
in thread passing DBI database handles to subroutines by moo

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.