in reply to Re: Archive::Zip - How to selectively copy files from one archive to another one?
in thread Archive::Zip - How to selectively copy files from one archive to another one?
Hello Mr. Muskrat and thanks for your reply.
I didn't have the code that I tried and I tried so many things that I decided to start from scratch... ;-)
Anyway I have tried your answer and first of all, it doesn't really answer the question because I was asking about selectively extract from one Zip and copy the files into another Zip. Which mean that I do not know yet what the file list is.
Based on your example and trying to remember what I did before, here is the code that I came up with:
use strict; use Archive::Zip qw( :ERROR_CODES :CONSTANTS ); my $oldfile = 'oldzip.zip'; my $newfile = 'newzip.zip'; my $oldzip = Archive::Zip->new(); $oldzip->read($oldfile) == AZ_OK or die 'read error'; my $newzip = Archive::Zip->new(); # Getting the list of selected files my @FileMembers123 = $oldzip->membersMatching("123.*\.xml"); foreach my $file (@FileMembers123) { $oldzip->extractMember($file); $newzip->addFile($file); } $newzip->writeToFileNamed( $newfile ) == AZ_OK or die 'error somewhere +';
When I try to execute this code, I have this error message:
Can't call method "desiredCompressionLevel" on an undefined value at c:/perl/lib/Archive/Zip/Archive.pm line 249When I try to print the content of the array @FileMembers123, this is what I get:
Archive::Zip::ZipFileMember=HASH(0x2f122f4)
Archive::Zip::ZipFileMember=HASH(0x2f124c4)
Archive::Zip::ZipFileMember=HASH(0x2f12694)
Archive::Zip::ZipFileMember=HASH(0x2f12864)
Archive::Zip::ZipFileMember=HASH(0x2f25a2c)
Archive::Zip::ZipFileMember=HASH(0x2f2a804)
etc...
It seems that I cannot get the file names using the command my @FileMembers123 = $oldzip->membersMatching("123.*\.xml");.
If I could generate the list of the files (using a matching pattern) in my old Zip without unzipping it, it would probably work.
Thanks again!
|
---|
Replies are listed 'Best First'. | |
---|---|
Re^3: Archive::Zip - How to selectively copy files from one archive to another one?
by Mr. Muskrat (Canon) on Aug 12, 2012 at 21:53 UTC |