在模具中使用未初始化的值.(珀尔)

  • 本文关键字:珀尔 初始化 perl die
  • 更新时间 :
  • 英文 :


当我运行脚本时,出现错误:

Use of uninitialized value in die at /usr/local/bin/tacms/subscriptionScheduler.pl line 101.
Died at /usr/local/bin/tacms/subscriptionScheduler.pl line 101.

第 101 行是以下行:

$contentRow = $contentSth->fetchrow_hashref() or die $dbh->errstr;

澄清一下,当我更改关键字时会出现此错误。如果我VERSETEST AND QUOTETEST使用我的测试关键字,则不会收到此错误。但是当我使用关键字VERSE and QUOTE时,我会遇到此错误。

有人可以帮我解决这个问题吗?

没有更多行要返回时,fetchrow_hashref返回undef是完全正常的。 既然$dbh->errstr也回来了undef,那一定是发生了什么。

这就是为什么我通常将 RaiseError 属性设置为 true 的原因,这样我就不必在每次调用 DBI 后检查错误。 这样,我知道当fetchrow_hashref返回undef时,它表示结果的结束而不是错误。

如果不使用 RaiseError ,可以按如下方式检查错误:

unless ($contentRow = $contentSth->fetchrow_hashref()) {
  die $dbh->errstr if defined($contentSth->err);
  print "No more resultsn"; # if we get here
}