package db_dave; use strict; use DBI; use vars qw/ @ISA /; @ISA = qw/DBI/; sub new { my $class = shift; my $dbh = DBI->connect('dbi:Oracle:foo', 'foo', 'foo', { RaiseError => 1 }) || die "Cant' connect: $DBI::errstr"; my $data = { _dbh => $dbh }; bless $data, $class; return $data; } sub runsql_returnString_NEW { my ($self, $q, $err) = @_; my $dbh = $self->{ _dbh }; my $sth = $dbh->prepare($q); $sth->execute || &error($q, $err); # <- why do you have a regular function in an OO module? my $returnstring; while (my @array = $sth->fetchrow) { # ?? You're overwriting this every time :( # I can't tell what type of data structure you want $returnstring = $array[0]; } $sth->finish; return $returnstring; }