in reply to .gz inside a zip
You were missing a my and a right bracket too
#!/home/cnda/master/bin/perl/bin/perl use strict; use warnings; use IO::Compress::Zip; use Archive::Zip qw( :ERROR_CODES :CONSTANTS ); use IO::Uncompress::Gunzip qw(gunzip $GunzipError) ; my @list=('E:/synctest/y2017.zip'); foreach my $path (@list){ my $zip = Archive::Zip->new(); unless ( $zip->read( $path ) == AZ_OK ) { die 'read error';} my @membersfn=$zip->memberNames(); for my $pathAndFilename (@membersfn) { print "$pathAndFilename\n"; my $member = $zip->memberNamed( $pathAndFilename ); if ($member) { $member->desiredCompressionMethod( COMPRESSION_STORED ); my $status = $member->rewindData(); die "error $status" unless $status == AZ_OK; my $membdata=''; while (!$member->readIsDone()){ my ( $bufferRef, $status ) = $member->readChunk(4*1024); die "error $status" if $status != AZ_OK && $status != AZ_STREAM_END; $membdata.=$$bufferRef; } # ! done my $flatdata; gunzip \$membdata=>\$flatdata; unless (defined $flatdata) {die "IO::Uncompress::Gunzip+un +zip failed: $GunzipError\n"; } print $flatdata."\n"; } # member }# pathAndFilename } # path
|
|---|