好的,這是交易。我有一個數組(從一個400 MB的文件輸入),如果我對它運行sort()命令,comp運行內存不足。輸入文件不是問題,所以我決定將初始數組分割成更小的數組,以便執行排序。我可以將初始數組分解成大小爲100k的數組,這是我的代碼所做的。在Perl覆蓋數組中推送電話
(對於此測試的目的,我已經從收縮400 MB的文件爲40 MB)
運行我破陣列碼,並在第一次迭代中,我有100K的數組作爲參考在我的@arrayList。我的代碼是這樣的:
push @arrayList, \@sorted; #@sorted is the sorted version of the 100k array
$temp = @arrayList; #returns 1, which it should
@arrayTemp2 = @{$arrayList[0]};
$temp = @arrayTemp2; #returns 100k, which it should
@arrayTemp2 = @{$arrayList[1]};
$temp = @arrayTemp2; #returns 0 since it is uninitialized
在for循環的下一個循環中,排序後的數組是其餘的初始數組,只有23k。相同的代碼再次運行,與這些結果:
push @arrayList, \@sorted; #@sorted is the sorted version of the 23k array
$temp = @arrayList; #returns 2, which it should
@arrayTemp2 = @{$arrayList[0]};
$temp = @arrayTemp2; #returns 23301, which is wrong
@arrayTemp2 = @{$arrayList[1]};
$temp = @arrayTemp2; #returns 23301, which is right.
我每次使用不同的方式我能想到的解決這個嘗試,我只是沒有離開的想法。任何幫助?
感謝
而且它確實如此簡單......這讓我很難過:P 非常感謝:) – ThePirateSheep 2010-07-29 16:15:59