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

2 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.
Run Code Online (Sandbox Code Playgroud)

第101行是:

$contentRow = $contentSth->fetchrow_hashref() or die $dbh->errstr;
Run Code Online (Sandbox Code Playgroud)

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

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

cjm*_*cjm 6

当没有更多行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 results\n"; # if we get here
} 
Run Code Online (Sandbox Code Playgroud)