summaryrefslogtreecommitdiff
path: root/examples/extract.pl
diff options
context:
space:
mode:
Diffstat (limited to 'examples/extract.pl')
-rw-r--r--examples/extract.pl39
1 files changed, 39 insertions, 0 deletions
diff --git a/examples/extract.pl b/examples/extract.pl
new file mode 100644
index 0000000..528ec5f
--- /dev/null
+++ b/examples/extract.pl
@@ -0,0 +1,39 @@
+#!/bin/perl -w
+# Extracts the named files into 'extractTest' subdir
+# usage:
+# perl extract.pl [-j] zipfile.zip filename [...]
+# if -j option given, discards paths.
+#
+# $Revision: 1.5 $
+#
+use strict;
+
+my $dirName = 'extractTest';
+
+use vars qw( $opt_j );
+use Archive::Zip qw(:ERROR_CODES);
+use Getopt::Std;
+
+$opt_j = 0;
+getopts('j');
+
+if (@ARGV < 2) {
+ die <<EOF
+ usage: perl extract.pl [-j] zipfile.zip filename [...]
+ if -j option given, discards paths.
+EOF
+}
+
+my $zip = Archive::Zip->new();
+my $zipName = shift(@ARGV);
+my $status = $zip->read($zipName);
+die "Read of $zipName failed\n" if $status != AZ_OK;
+
+foreach my $memberName (@ARGV) {
+ print "Extracting $memberName\n";
+ $status =
+ $opt_j
+ ? $zip->extractMemberWithoutPaths($memberName)
+ : $zip->extractMember($memberName);
+ die "Extracting $memberName from $zipName failed\n" if $status != AZ_OK;
+}