我有一个执行递归函数的 Perl 脚本。在其中比较二维数组的两个元素:
我用二维数组“@data”和“0”作为起始值调用例程。首先,我将参数加载到单独的二维数组“@test”中
然后我想看看,如果数组只包含一个元素 --> 比较最后一个元素 == 第一个元素。这就是发生错误的地方:尝试修改不可创建的数组值,下标-1。
你试图让一个数组值突然出现,并且下标可能是负数,甚至从数组的末尾向后计数。
这对我没有多大帮助......我很确定它与 if 子句“$counter-1”有关。但是我不知道是什么,希望大家能帮帮我!
routine(@data,0);
sub routine {
my @test #(2d-Array)
my $counter = $_[-1]
for(my $c=0; $_[$c] ne $_[-1]; $c++){
for (my $j=0; $j<13;$j++){ #Each element has 13 other elements
$test[$c][$j] = $_[$c][$j];
}
}
if ($test[$counter-1][1] eq $test[-1][1]{
$puffertime = $test[$counter][4];
}
else{
for (my $l=0; $l<=$counter;$l++){
$puffertime+= $test[$l][4]
}
}
}
#
#
#
if ($puffertime <90){
if($test[$counter][8]==0){
$counter++;
routine(@test,$counter);
}
else{ return (print"false");}
}
else{return (print "true");}
奇怪的是我今天早上试了一下,它奏效了。在运行了一小段时间后,他再次提出了此错误消息。可能是我没有赶上动态数据库条目可能发生的错误星座。