次のコードを実行して、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;