我对测试参数的方式有点困惑。以下是下面发布的源代码中的两个示例。首先是这个
if(!defined($DBHdl) || !defined($acct_no));
测试未定义参数的方法?
其次,分配给 hashref 后
$ptMtrRecRef = $ptSelHdl->fetchrow_hashref;
是最好的测试方法$ptMtrRecRef
被定义为使用
if(!$ptMtrRecRef)
or
if(!defined($ptMtrRecRef))
?
###############################################################################
# Returns count of meters per account number.
# $PkNam -- package name discarded
# $DBHdl -- ICS database handle
# $acct_no -- water account number
sub mgbl_get_meter_count
{
my ($PkNam, $DBHdl, $acct_no) = @_;
die("mgbl_get_meter_count passed undef handles.\n")
if(!defined($DBHdl) || !defined($acct_no));
my $ptSelHdl;
my $ptMtrRecRef;
my $sql_statement =
"select count(*) from meter m where m.acct_no = ".$acct_no.";";
$ptSelHdl = $DBHdl->prepare($sql_statement);
die("Cannot prepare select count(*) from meter m\n")
if(!$ptSelHdl || !$ptSelHdl->execute);
$ptMtrRecRef = $ptSelHdl->fetchrow_hashref;
return $ptMtrRecRef;
}
$sth->fetchrow_hashref
要么会返回undef
或对哈希的引用。像这样
if (defined($row))
and
if ($row)
在这里是等价的。 (undef
是假的,引用总是正确的。)我选择更简单的替代方案。
同样的想法$dbh->prepare
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)