Я новичок в перле. Я пытаюсь построить 2D-массив во время выполнения из двоичного файла. Я получаю сообщение об ошибке "недостаточно памяти". Я использую Perl 5.16.3 в Windows7. Размер моего входного файла составляет ~ 4,2 МБ. В моей системе физическая память составляет 4 ГБ, и я использую 90%, а затем при запуске этого кода появляется ошибка нехватки памяти.
Я пробовал много способов отладить это. Только если я уменьшу b32 до b16 или меньше, я смогу успешно работать. Даже при этом, если размер файла превышает 4 МБ, ошибка появляется снова. Я попытался посмотреть на использование физической памяти в диспетчере задач во время выполнения кода, оно продолжает увеличиваться.
Мой друг подозревал, что это должно быть проблемой утечки памяти. Я не мог разобраться с его подозреваемым. Мне нужна помощь в исправлении этого.
#!/usr/bin/perl
use strict;
use warnings;
open( DATA, 'debug.bin' ) or die "Unable to open:$!";
binmode DATA;
my ( $data, $n, $i );
my @2dmatrix;
while ( $n = read DATA, $data, 4 ) {
push @2dmatrix, [ split( '', unpack( 'b32', $data ) ) ];
}
print scalar(@2dmatrix);
print "completed reading";
close(DATA);
Просто, чтобы очистить требование. Из сборки 2d-массива мне нужно извлечь содержимое из столбца A, соответствующего определенному шаблону (11111111000000001111111100000000) в столбце B. Это нужно сделать для 4 наборов столбцов с размером файла 500 МБ.