if (my $sth = $self->{$dbh}{$query}) { warn "Using cached statement handler\n" if $self->debug; return $sth; } else { warn "Creating new statement handler\n" if $self->debug; $sth = $dbh->prepare($query) || $self->throw("Couldn't prepare query $query:\n ".DBI->errstr."\n"); return $self->{$dbh}{$query} = $sth; }