It's all explained rather well in the docs. Archive::Zip
addFile is expecting a filename not an Archive::Zip::ZipFileMember object. Try this instead:
#!perl
use strict;
use warnings;
use Archive::Zip qw( :ERROR_CODES :CONSTANTS );
# Include actual filenames in the next two lines
my $oldfile = 'oldzip.zip';
my $newfile = 'newzip.zip';
my $oldzip = Archive::Zip->new();
$oldzip->read( $oldfile ) == AZ_OK or die 'read error';
print "$oldfile contains the following files:\n";
print " $_\n" for $oldzip->memberNames();
print "\n";
my $newzip = Archive::Zip->new();
my @wanted = $oldzip->membersMatching( '123.*\.xml' );
for my $member ( @wanted )
{
print "Extracting ", $member->fileName(), " from $oldfile and addi
+ng to $newfile\n";
$oldzip->extractMember( $member );
$newzip->addMember( $member );
}
print "\n";
$newzip->writeToFileNamed( $newfile ) == AZ_OK or die 'error somewhere
+';
print "$newfile contains the following files:\n";
print " $_\n" for $newzip->memberNames();
__END__
# Sample output
oldzip.zip contains the following files:
123a.xml
123b.xml
234c.xml
Extracting 123a.xml from oldzip.zip and adding to newzip.zip
Extracting 123b.xml from oldzip.zip and adding to newzip.zip
newzip.zip contains the following files:
123a.xml
123b.xml
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.
|