Gigabyte1907 has asked for the wisdom of the Perl Monks concerning the following question:
Hello there!
I have a large Zip archive and I'm trying to extract files based on their names, and copy them into new Zip archives.
The method I'm using now is similar of what I would do using a simple batch file. First I'm extracting all the files using the ExtractTree command:
$zip->extractTree();Then I use the "File::Find::Rule" module to add the files to new Zip archives using regular expression:
my $finder_type1 = File::Find::Rule->new()->name(qr/Type1_(.*?)\.xml$/ +i)->start("."); while( my $file1 = $finder_type1->match() ){ $type1->addFile($file1); } my $finder_type2 = File::Find::Rule->new()->name(qr/Type2_(.*?)\.xml$/ +i)->start("."); while( my $file2 = $finder_type2->match() ){ $type2->addFile($file2); } etc...
This is of course extremely inefficient. I tried to copy files from one Zip to another using $zip->extractMember($element) then write them to another Zip using $type1->addFile($element) but that didn't work, I got empty Zip archives as result.
I'm sure there's a way to selectively copy files from one Zip archive to another without extracting the whole thing and adding them again; is it?
Thanks in advance for help!
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Archive::Zip - How to selectively copy files from one archive to another one?
by Mr. Muskrat (Canon) on Aug 05, 2012 at 16:39 UTC | |
by Gigabyte1907 (Initiate) on Aug 11, 2012 at 18:08 UTC | |
by Mr. Muskrat (Canon) on Aug 12, 2012 at 21:53 UTC |