from pgsql_perl5 to DBD-Pg



Hello,

I am crossposting from dbd-pg@xxxxxxxx, as the other list appears to
be dead.

I am writing the answer to my original question [<a href="http://
www.nntp.perl.org/group/perl.dbd.pg/2007/02/msg60.html">see
here</a>], as I go along and learn DBI. This is a list of minimal
string replacements that shoul do it. The resulting code will not be
efficient, but it can always be optimized at a later time.

Be kind, and help me out.

# [1]: use Pg;
# [2]: use DBI;
#
# [1]: $dbh = Pg::connectdb("dbname=$dbname");
# [2]: $dbh = DBI->connect("DBI:Pg:dbname=$dbname", "", "",
{AutoCommit => 1});
#
# [1]: $dbh->exec("<SQL STATEMENT>");
# [2]: $dbh->do("<SQL STATEMENT>");
#
# [1]: $dbh->status == 1
# [2]: $dbh eq "undef"
#
# [1]: $sth->nfields
# [2]: $sth->{NUM_OF_FIELDS}

This is work in progress, as I keep going.

The last string replacement triggers an error, because $sth-
{NUM_OF_FIELDS} is actually a string, while $sth->nfields is a
number. Using the above in loops returns the following error:

Can't use string ("1496") as a HASH ref while "strict refs" in use at
<.....> line <...> (#2)
(F) Only hard references are allowed by "strict refs". Symbolic
references are disallowed. See perlref.

This is odd, however. In the manual "Programming the Perl DBI" I see
this example:

for ( $i = 1 ; $i <= $sth->{NUM_OF_FIELDS} ; $i++ ) {
print "Column $i is called $sth->{NAME}->[$i-1]\n";
}

In my code, in the above line error, I have

for ($i=0; $i < $result->{NUM_OF_FIELDS} ; $i++)

which is hardly controversial. So, why am I having that error at all?

Bob

.