我在Perl模块中有一个sub,Advancer.pm:
sub validate_extra {
my ($dbh, $customer_id, $site) = @_;
my $sth = $dbh->prepare(qq{
SELECT key
FROM master
WHERE
code = ?
AND set = ?
AND type_id = 2
ORDER BY customer_id DESC, site DESC
LIMIT 1
});
$sth->execute($customer_id, $site);
但是当我从测试(.t)调用此模块时,我收到错误:
无法在Advancer.pm第511行调用未准定值的方法“prepare”。
my $sth = $dbh->prepare(qq{
是第511行。
答案 0 :(得分:5)
您将第一个参数的未定义值传递给validate_extra
。
最明显的是,如果您的电话只是
,就会发生这种情况validate_extra();
但是您可能错误地传递了错误的变量,或者原始连接可能已失败但未经检查:
my $dbh = DBI->connect('DBI:mysql:database=mydb', 'user', 'pass', {PrintError => 0});
validate_extra($dbh, $customer, $site);