my $dbh = DBI->connect( .... );
my $big_honkin_data_structure = { house => "semi", car => "oldsmobile", dbh
=> $dbh,
                                  age => 43, ... };
...

myFavouriteSubroutine( $big_honkin_data_structure->{dbh}, 3 );

...

sub myFavouriteSubroutine
{
    my ( $dbh, $num ) = @_;
    my $data = $dbh->selectall_arrayref( .... );
    ....
}

This is for simple data structures and you can do a lot of things with this
style.  Objects are more complex and not needed for many applications.  This
is basic Perl and not properly part of this mailing list.

Books have been suggested recently and are mentioned in perl.org.  For
instance, _Programming Perl_ and _Perl Cookbook_.

-Will


-----Original Message-----
From: Brandon Metcalf [mailto:[EMAIL PROTECTED] 
Sent: Tuesday 29 March 2005 17:59
To: Rutherdale, Will
Cc: [email protected]
Subject: embedding DB handle in object (was RE: adding key to DB object)


In trying to take your suggesting and embed a DB handle in my own object,
this is what i've come up with.  However, a error is being thrown when DBI
is trying to destory the handle which I understand. What I don't get is how
to do this properly.

This may be inappropriate for this forum.

  $ cat jj
  #!/usr/bin/perl

  use strict;
  use warnings;

  use ii;

  my $dbh = ii->dbconnect_new();
  __END__
  $ cat ii.pm
  package ii;

  use strict;
  use warnings;

  use DBI;

  use vars qw{ @EXPORT @ISA};

  use Exporter;
  @ISA = qw{ Exporter DBI::db };
  @EXPORT = qw{ &dbconnect_new };

  sub dbconnect_new {
     my ($pkg, $dbname) = @_;

     my $dbh;
     $dbh->{dbhandle} = DBI->connect("dbi:Pg:dbname='mydb';host='myhost'");

     bless $dbh, $pkg;
  }
  1;
  __END__
  $ ./jj
  SV = RV(0x810eb70) at 0xbfffdb10
    REFCNT = 1
    FLAGS = (ROK,READONLY)
    RV = 0x8108240
          (in cleanup) dbih_getcom handle ii=HASH(0x8108240) is not a DBI
handle (has no magic).



-- 
Brandon


     - - - - - - -  Appended by Scientific-Atlanta, Inc.  - - - - - - -  
This e-mail and any attachments may contain information which is confidential, 
proprietary, privileged or otherwise protected by law. The information is 
solely intended for the named addressee (or a person responsible for delivering 
it to the addressee). If you are not the intended recipient of this message, 
you are not authorized to read, print, retain, copy or disseminate this message 
or any part of it. If you have received this e-mail in error, please notify the 
sender immediately by return e-mail and delete it from your computer.

Reply via email to