the database methods return rows with each column value tagged by it's column name, something I'm still to find in the DBI module.
Have you tried
fetchrow_hashref
% pelrdoc DBI
[snip]
`fetchrow_hashref'
$hash_ref = $sth->fetchrow_hashref;
$hash_ref = $sth->fetchrow_hashref($name);
An alternative to `fetchrow_arrayref'. Fetches the
next row of data and returns it as a reference to a
hash containing field name and field value pairs.
Null fields are returned as `undef' values in the
hash.
If there are no more rows or if an error occurs, then
`fetchrow_hashref' returns an `undef'. You should
check `$sth-'>`err' afterwards (or use the
`RaiseError' attribute) to discover if the `undef'
returned was due to an error.
The optional `$name' parameter specifies the name of
the statement handle attribute. For historical reasons
it defaults to "`NAME'", however using either
"`NAME_lc'" or "`NAME_uc'" is recomended for
portability.
The keys of the hash are the same names returned by
`$sth-'>`{$name}'. If more than one field has the same
name, there will only be one entry in the returned
hash for those fields.
Because of the extra work `fetchrow_hashref' and Perl
have to perform, it is not as efficient as
`fetchrow_arrayref' or `fetchrow_array'.
Currently, a new hash reference is returned for each
row. This will change in the future to return the
same hash ref each time, so don't rely on the current
behaviour.
-Blake