this seems to have changed since i installed DBI 1.32 (i upgraded from 1.30), and is breaking some scripts which assume that it will always return a hash.
sometimes (when the query returns no rows), it returns the scalar "1" - attempting to use that as a hashref causes the script to die (with "strict refs" set - would cause strange errors without it) the problem seems to be in _do_selectrow() in DBI.pm, which is also used by selectrow_arrayref. as a temporary workaround fix, i hacked _do_selectrow() so that it always returns the appropriate reference. like so: sub _do_selectrow { my ($method, $dbh, $stmt, $attr, @bind) = @_; my $sth = ((ref $stmt) ? $stmt : $dbh->prepare($stmt, $attr)) or return; $sth->execute(@bind) or return; my $row = $sth->$method() and $sth->finish; # temporary workaround fix. CAS 2003-02-14 if ($method =~ /ref/ && ! ref($row)) { warn "***** _do_selectrow workaround"; $row = [] if ($method =~ /array/); $row = {} if ($method =~ /hash/); } ; return $row; } i don't know the DBI code well enough to know whether this will have other undesirable consequences, but it stops my scripts from dying until a real fix is available. craig -- craig sanders <[EMAIL PROTECTED]> Fabricati Diem, PVNC. -- motto of the Ankh-Morpork City Watch