[Pdx-pm] Hash question

Joe Oppegaard joe at radiojoe.org
Fri Nov 21 17:45:55 CST 2003

On Fri, 21 Nov 2003, Roderick A. Anderson wrote:

> New to the list and glad I found it.  Not from the Portland area (Hayden,
> ID).

Cool, welcome to the list.

> First the append hash solution.  I use the hash generated from some CGI.pm
> params then query a SQL Server database and and use DataHash to returned
> the row.  To append to the original hash I'm using a variation on code I
> got out of "Perl Cookbook".
> 	%SignUpInfo = (%SignUpInfo, $db2->DataHash());
> Is there a better or more efficient way to do this?
> Then the Win32::ODBC issue.  When I use the above $db2->DataHash() whether
> appending or creating a new hash I end up with an empty key/value in
> the hash.
> Doing a
>         foreach my $key (sort keys %SignUpInfo) {
>             print "$key: $SignUpInfo{$key}\n";
> gets me output with one line with only the colon on it.  Is there a way to
> remove this key/value combination?  I think it has to do with Win32::ODBC
> returning some kind of row identifier.

I'm guessing that %SignUpInfo was initially empty up top and
$db2->DataHash() had some type of error condition and returned undef
or ''.

Take the following for example which will print just a colon:

sub ret_undef {
    return undef;

%a = ret_undef();
foreach (keys %a) {
    print "$_ : $a{$_}\n";

Or to get a better idea of what's in the hash:

use Data::Dumper;
print Dumper(\%a);

Which shows you that you actually do have a blank key:
$VAR1 = {
          '' => undef

I don't think you really want to remove the blank key/value combination,
you probably just want to make sure you're properly checking for error
conditions when doing the Win32::ODBC calls.

	-Joe Oppegaard

More information about the Pdx-pm-list mailing list