我收到该行的错误:while($line =<$fh>)
它是什么意思,我该如何解决?
整个代码是:
use strict;
use warnings;
use v5.14;
use Compress::Zlib;
my $filename= "example.gz";
my $fh= gzopen($filename, "rb");
my $line=0;
my $counter=1;
my @array=();
while($line = <$fh>) { # <-- this line
@array= split (' ', $line);
my $num = scalar(@array);
print "$array[15] $array[1]\n" if ($array[15] eq "word");
$counter++;
}
close $fh;
答案 0 :(得分:6)
您必须使用$gz->gzreadline($line)
来读取zip文件的一行。
while ($gz->gzreadline($line) > 0) {
@array= split (' ', $line);
...
答案 1 :(得分:1)
正如@mpapec指出的那样,Compress::Zlib::gzopen
没有返回文件句柄。
您可以使用PerlIO::gzip获取更多perlish api来阅读.gz
个文件:
use PerlIO::gzip;
open my $fh, "<:gzip", "example.gz" or die $!;
while(<$fh>){
chomp;
…
}
行号通常存储在$.
中,因此您无需自己计算。