Perl 什么';当调用errstr时,这个DBI:db对象会发生什么情况?
我正在将当前类中名为“dbc”的属性委托为DBIx::Connector,以便可以从内部方法调用$self->dbc->dbh,但是我并不真正理解在DBI::db实例上调用“errstr”方法时看到的一些行为: 这:Perl 什么';当调用errstr时,这个DBI:db对象会发生什么情况?,perl,reference,moose,Perl,Reference,Moose,我正在将当前类中名为“dbc”的属性委托为DBIx::Connector,以便可以从内部方法调用$self->dbc->dbh,但是我并不真正理解在DBI::db实例上调用“errstr”方法时看到的一些行为: 这: eval { $dbh->do($sql); }; $self->log->warn("Warning SQL error: $dbh->errstr") if ($@); 返回WARN-Warning-SQL错误:DBI::db=HASH(0x
eval {
$dbh->do($sql);
};
$self->log->warn("Warning SQL error: $dbh->errstr") if ($@);
返回WARN-Warning-SQL错误:DBI::db=HASH(0xaf43130)->errstr
但是,这会起作用,并返回正确的错误字符串:
eval {
$dbh->do($sql);
};
if($@){
my $errstr = $dbh->errstr;
$self->log->warn("Warning SQL error: $errstr");
}
这里发生了什么?Perl不会在双引号字符串中插入方法调用
$dbh->errstr
正在调用一个方法。尝试:
$self->log->warn("Warning SQL error: " . $dbh->errstr) if $@;
Perl不会在双引号字符串中插入方法调用
$dbh->errstr
正在调用一个方法。尝试:
$self->log->warn("Warning SQL error: " . $dbh->errstr) if $@;
您试图在字符串中插入函数调用 尝试将警告字符串与函数调用连接起来
$self->log->warn("Warning SQL error: ".$dbh->errstr) if ($@);
这部分错误:
DBI::db=HASH(0xaf43130)
是数据库句柄的地址。您试图在字符串中插入函数调用 尝试将警告字符串与函数调用连接起来
$self->log->warn("Warning SQL error: ".$dbh->errstr) if ($@);
这部分错误:
DBI::db=HASH(0xaf43130)
是数据库句柄的地址