現在のクラスの「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 error: DBI::db=HASH(0xaf43130)->errstr
ただし、これは機能し、適切なエラー文字列を返します。
eval {
$dbh->do($sql);
};
if($@){
my $errstr = $dbh->errstr;
$self->log->warn("Warning SQL error: $errstr");
}
ここで何が起こっているのですか?