2015-07-22 4 views
0

У меня есть скрипт, который открывает большой текстовый файл и извлекает данные для создания отчета.Perl: разбор сжатых файлов

Вопрос:

Есть ли способ, чтобы открыть файл в Perl, даже если файл был сжат gzip?

Gunzip Файл перед открытием должен замедляться.

Пример:

open(my $fh, "<", "input.txt.gz") 

ответ

2

IO::Uncompress::Unzip модуль может помочь вам.

use IO::Uncompress::Unzip qw(unzip $UnzipError) ; 
unzip $input_filename_or_reference => $output_filename_or_reference [,OPTS] 
    or die "unzip failed: $UnzipError\n"; 

Функциональный интерфейс требует Perl5.005 или выше.

Или Вы можете использовать модуль CPAN PerlIO::gzip:

use PerlIO::gzip; 
open FOO, "<:gzip", "file.gz" or die $!; 
print while <FOO>; # And it will be uncompressed... 

binmode FOO, ":gzip(none)" # Starts reading deflate stream from here on 

PerlIO::gzip обеспечивает слой PerlIO, который манипулирует файлы в формате, используемом программой gzip. Сжатие и декомпрессия реализованы, но не вместе. Если вы попытаетесь открыть файл для чтения и записи, это приведет к сбою.