#!perl use strict; use warnings; use Archive::Zip qw( :ERROR_CODES :CONSTANTS ); # Include actual filenames in the next three lines my $oldfile = 'oldzip.zip'; my $newfile = 'newzip.zip'; my @wanted = ( 'perl.log', 'perld.log' ); my $oldzip = Archive::Zip->new(); $oldzip->read( $oldfile ) == AZ_OK or die 'read error'; my $newzip = Archive::Zip->new(); for my $file ( @wanted ) { $oldzip->extractMember( $file ); $newzip->addFile( $file ); } $newzip->writeToFileNamed( $newfile ) == AZ_OK or die 'error somewhere';