in reply to Problem with script? Might be in hash? Help!

I'd wager your problems have to do with this construct:

foreach (my ($key, $value) = each (%take_counts)) { print OUTPUT "$host\t$key\t$value\n"; }

Compare the following

my %take_counts = ( foo => 1, bar => 2, baz => 3, ); print "while:\n"; while (my ($key, $value) = each (%take_counts)) { print "\t$key\t$value\n"; } print "foreach:\n"; foreach (my ($key, $value) = each (%take_counts)) { print "\t$key\t$value\n"; } __END__ while: bar 2 baz 3 foo 1 foreach: bar 2 bar 2

I supect you meant to get what while (...) would give you...

(The foreach loop iterates over the two elements $key and $value that are being returned by calling each %take_counts once...)

___

Other than that (though nothing to do with your immediate problem), the usage of {RaiseError=>1} in combination with || die doesn't make much sense:

my $dbh = DBI->connect("DBI:mysql:database=$database:host=$host",$db_u +ser,$db_pass,{RaiseError=>1})|| die "$DBI::errstr\n";

because in case of an error, when RaiseError is set, the connect call would already have died by itself before it gets to execute the || die "$DBI::errstr\n" (i.e. it does not return).   In other words, use either one of those instead

my $dbh = DBI->connect("DBI:mysql:database=$database:host=$host",$db_u +ser,$db_pass) || die "$DBI::errstr\n"; # or my $dbh = DBI->connect("DBI:mysql:database=$database:host=$host",$db_u +ser,$db_pass,{RaiseError=>1});

Replies are listed 'Best First'.
Re^2: Problem with script? Might be in hash? Help!
by AnomalousMonk (Archbishop) on Oct 09, 2009 at 18:47 UTC
    See also Re: Trouble using XML::LibXML for another discussion of the hash iteration problem. (Oh, wait... Since it's the same problem from the same OPer with almost the same code statement, and since the OPer didn't pay any attention to the previous post, it's unlikely any attention will be paid now, so nevermind...)
      Thanks much Almut. That worked, switching it to a while loop. Pretty dumb on my part, but that's why you guys are monks! and for the Anonymous poster, I don't even remember post that...but I do read your posts and the correction to that specific issue wasn't changing the loop but moving it outside the firstr loop and using parse_string..so I sort of spaced the while/for part. Thansk again.