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 | |
by kdmurphy001 (Sexton) on Oct 09, 2009 at 20:02 UTC |