Хорошо, вот сделка.У меня есть массив (введенный из файла 400 МБ), где, если я запускаю команду sort (), компу не хватает памяти.Входной файл не является проблемой, поэтому я решил разбить исходный массив на меньшие массивы, с которыми я могу выполнить сортировку.Я могу разбить исходный массив на массивы размером 100 КБ, что и делает мой код.
(для целей этого тестирования я сократил файл с 400 МБ до 40 МБ)
Я запускаю свой код массива прерываний, и на первой итерации у меня есть массив 100 КБ в качестве ссылки в моем @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 отсортированный массив является остальной частью исходного массива, только 23 КБ.Тот же код выполняется снова, с такими результатами:
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.
Я пытался использовать разные способы, чтобы придумать это, и у меня просто не осталось идей.Любая помощь?
Спасибо