我正在运行以下代码以从 mysql 数据库中提取 ID 列表并将它们存储在数组中。我在我的代码的其他地方执行了这个确切的步骤序列,但是在这个位置,发生了一些有趣的事情,Perl 只是挂起并且永远不会返回。代码中的其他任何地方都可以正常工作。如果我按原样运行此代码,它运行良好,但如果我取消注释 push() 函数,它会挂起。这是一个错误吗?
my $result = $db->query($sqlstring)
if ($result->numrows > 0) {
my @list = ();
while (my %row = $result->fetchhash) {
my $studyid = $row{'study_id'} + 0;
print "$studyid\n";
WriteLog("Found study [" . $studyid . "]");
#push(@list,$studyid); # uncomment this to hang it
}
return \@list;
}
编辑:我尝试了 data::dumper。但是现在冻结发生在一个新的位置。在下面的代码中,它在最后一个 Dumper(@list) 语句之后立即冻结。(我也从 MySQL 模块切换到 DBI,但没有效果)。
my @list = ();
my $result = $dbh->prepare($sqlstring);
$result->execute();
WriteLog($sqlstring);
if ($result->rows > 0) {
while (my $row = $result->fetchrow_hashref()) {
my $studyid = $row->{study_id};
WriteLog("Found study [" . $studyid . "]");
push @list,$studyid;
}
}
print Dumper(@list);
return \@list;