Perl:不是GLOB参考

时间:2014-12-17 11:13:46

标签: perl

我收到该行的错误: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;  

2 个答案:

答案 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;
   …
}

行号通常存储在$.中,因此您无需自己计算。