Ich möchte einen Hash und $dbh
an meine Sub-save2db
übergeben. Ich erhalte jedoch eine Fehlermeldung: Odd number of elements in hash assignment in file2.pm
nach dieser Codezeile: my (%resultHash, $dbh) = (@_);
. Kann mir bitte jemand die Ursache dieses Fehlers erklären. Danke im Voraus!Odd Anzahl der Elemente in der Hash-Zuweisung im Subroutinenparameter
file1.pl
my $dbh_global = connect2db();
my %hash; ##Assume there are nothing wrong with the hash and it is populated
foreach my $fileName_input (@ARGV){
NVD::save2db(%hash, $dbh_global);
}
sub connect2db{
my $driver = "mysql";
my $database = "test";
my $dsn = "DBI:$driver:database=$database";
my $userid = "root";
my $password = "";
my $dbh = DBI->connect($dsn, $userid, $password) or die $DBI::errstr;
return $dbh;
}
file2.pm
sub save2db{
my (%resultHash, $dbh) = (@_); # <-Error message occured
foreach my $resultHash_entry (keys %resultHash){
my $a= $resultHash{$resultHash_entry}{'a'};
my $b= $resultHash{$resultHash_entry}{'b'};
my $c= $resultHash{$resultHash_entry}{'c'};
my $d= $resultHash{$resultHash_entry}{'d'};
my $insert_sql = $dbh -> prepare("INSERT INTO `test`.`record`
(`a`, `b`, `c`, `d`)
VALUES
(?, ?, ?, ?)");
$insert_sql->execute($a, $b, $c, $d) or die $DBI::errstr;
}
}
Hallo mkHun, danke für deine Erklärung und Lösung. – SL07