in reply to Re^6: Reading zipped files (.gz)
in thread Reading zipped files (.gz)

You already have been introduced to the concept of reading from pipes. Maybe try

my $cmd = sprintf 'gzip -cd "%s"', $file; open my $fh, $cmd or die "Couldn't read [$cmd]: $!";

Replies are listed 'Best First'.
Re^8: Reading zipped files (.gz)
by ravi45722 (Pilgrim) on Nov 18, 2015 at 10:08 UTC

    In the code I am printing the list of files. In that it showing files. But while trying to read it's showing error like this.

    [root@ems NSN_SGSN]# perl gun.pl $VAR1 = [ 'generate_ASR_PSR_report.pl.gz', 'generate_nsn_sgsn_report.pl.gz' ]; Couldn't read [gzip -cd "generate_ASR_PSR_report.pl.gz"]: No such file + or directory at gun.pl line 20.
    #!/usr/bin/perl use warnings; use strict; use File::Glob ':bsd_glob'; use Archive::Tar; use Data::Dumper; my $cdr_dir="/root/prac/NSN_SGSN"; my @list = bsd_glob('g*.gz'); print Dumper \@list; foreach my $file (@list) { my $cmd = sprintf 'gzip -cd "%s"', $file; open my $fh, $cmd or die "Couldn't read [$cmd]: $!"; while ( my $line = <$fh> ) { print $line; } close $fh; }

      Sorry, that's my error. The command to open must be:

      my $cmd = sprintf 'gzip -cd "%s" |', $file;

      I think now is a good time to (re)read and understand the documentation for open.

        Is this method is better or using a module is better??? If there is any change in execution time I dont have any objection. My main concern is memory.

        It will read all my file into memory. But I think it's not best practice because am dealing with a bit large files. Is there any other way????

          A reply falls below the community's threshold of quality. You may see it by logging in.