运行 Perl 脚本时出现此错误的最常见原因是什么:
Memory fault(coredump)
我事先运行了两个 SQL 命令,它们只存储约 1500 行,每行有 6 个字段。SQL 在脚本中运行良好,所以我认为我不会从中得到错误。我的一半代码在它发生炸弹并给我那个错误之前运行。
那么这个错误的最常见原因是什么?我的原因可能是什么?
编辑 - 这是有效的代码
my $i;
$i = 0;
while ($DBS->SQLFetch() == *PLibdata::RET_OK)
{
while ($i != $colnamelen)
{
if ($i == 1)
{
$rowfetch = $DBS->{Row}->GetCharValue($colname[$i]);
$rowfetch =~ s/(?=..$)/:/;
printline($rowfetch);
$i++;
}
if ($i == 2)
{
$rowfetch = $DBS->{Row}->GetCharValue($colname[$i]);
$rowfetch =~ s/(?=..$)/:/;
printline($rowfetch);
$i++;
}
if ($i == 10)
{
$rowfetch = $DBS->{Row}->GetCharValue("meetdays");
$rowfetch =~ s/-//gi;
printline($rowfetch);
$i++;
}
if ($i == 12)
{
$rowfetch = $DBS->{Row}->GetCharValue("fullname");
my ($lname, $fname) = split /,\s*/, $rowfetch;
$rowfetch = $fname;
printline($rowfetch);
$rowfetch = $lname;
printline($rowfetch);
$i=$i+2;
}
else
{
$rowfetch = $DBS->{Row}->GetCharValue($colname[$i]);
printline($rowfetch);
$i++;
}
}
$i=0;
printf $fh "\n";
}
这是不起作用的代码 - 所做的只是优化 sql fetch 命令
my $i;
$i = 0;
while ($DBS->SQLFetch() == *PLibdata::RET_OK)
{
while ($i != $colnamelen)
{
$rowfetch = $DBS->{Row}->GetCharValue($colname[$i]);
if ($i == 1)
{
$rowfetch =~ s/(?=..$)/:/;
printline($rowfetch);
$i++;
}
if ($i == 2)
{
$rowfetch =~ s/(?=..$)/:/;
printline($rowfetch);
$i++;
}
if ($i == 10)
{
$rowfetch =~ s/-//gi;
printline($rowfetch);
$i++;
}
if ($i == 12)
{
my ($lname, $fname) = split /,\s*/, $rowfetch;
$rowfetch = $fname;
printline($rowfetch);
$rowfetch = $lname;
printline($rowfetch);
$i=$i+2;
}
else
{
printline($rowfetch);
$i++;
}
}
$i=0;
printf $fh "\n";
}
哦,顺便说一句,在这个 while 循环开始运行之前,有一个有效的 SQL 语句。我只是不想浪费空间。