ハッシュと$dbh
をサブsave2db
に渡したいとします。ただし、次のコード行の後にOdd number of elements in hash assignment in file2.pm
というエラーメッセージが表示されます。my (%resultHash, $dbh) = (@_);
。誰かがこのエラーの原因を私に説明してもらえますか?前もって感謝します!奇数サブルーチンパラメータのハッシュ割り当ての要素数
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;
}
}
こんにちはmkHun、あなたの説明と解決に感謝します。 – SL07