我有一個Perl腳本,它執行遞歸函數。在它內部比較2維陣列的兩個元素:Perl嘗試修改非創建數組值,下標-1
我用2D數組「@data」和「0」作爲初始值調用該例程。首先我加載參數到一個單獨的2D陣列「@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");}
奇怪的是,我今天早上試了一下,它的工作。經過一段時間的跑步後,他又想出了這個錯誤信息。可能是因爲我沒有趕上錯誤星座,這可能是由動態數據庫條目發生的。
是否使用數組的最後一個元素來存儲元素的數量? 'my $ counter = $ _ [ - 1]'是什麼? – Arkadiy 2013-03-22 13:15:03
@Arkadiy,他正在把計數器作爲常規的「第二」論點。 – 2013-03-22 13:19:35
使用包含唯一ID的[-1] [1]測試的最後一個元素來檢查數組是否只有一個元素,然後將值傳遞給$ puffertime,這對於以下代碼很重要 – phips0r 2013-03-22 13:23:01