逐行读取BZ2文件

时间:2017-04-28 13:11:18

标签: perl

我想逐行读取文件:

#!/usr/bin/env perl

use strict;
use warnings;

open my $fh, '<', "file.txt" or die "Can't read file.txt: $!";

while (<$fh>) {

}
close $fh;

但我找不到如何为压缩文件执行此操作,例如bz2和gz。

我无法理解documentation for IO::Uncompress::Bunzip2 我如何在一个真实的程序中实现它。

如何像普通文件一样逐行读取压缩文件?

1 个答案:

答案 0 :(得分:2)

试试这个:

use strict;
use warnings;

use IO::Uncompress::Bunzip2 '$Bunzip2Error';

my $file = "somefile.txt.bz2";

my $zh = IO::Uncompress::Bunzip2->new( $file, {
    AutoClose   => 1,
    Transparent => 1,
} ) or die "IO::Uncompress::Bunzip2 failed: $Bunzip2Error\n";

while ( <$zh> ) {
    print;
}