У меня нет отличного метода для тестирования этого, но из этого поста Я думаю, вы можете открыть файл с помощью
open my $handle, '-|', '/usr/bin/gzcat', $filename;
Это позволит вам пошагово просматривать файл, как в
foreach my $line (<$handle>) {
do stuff with $line ...
}
Насколько я понимаю, это не приводит к потере целого файла и должно помочь с памятью большого файла. Если я ошибаюсь по этому поводу, надеюсь, кто-нибудь придет и ударит меня рыбой.
Я также знаю, что это идет вперед, но я надеюсь, что теперь вам не нужно возвращаться назад с точки зрения памяти. Если вы все еще делаете, возможно, вы можете сделать некоторые изменения, чтобы использовать его с File :: Backwards.
Теперь у меня, похоже, нет gzcat
в моей системе (Ubuntu), хотя я нахожу множество ссылок, которые говорят, что gzcat
совпадает с zcat
или gunzip -c
или gzip -dc
на имя программы YMMV. Я снова надеюсь, что метод оправдан.