diff options
Diffstat (limited to 'examples/extract.pl')
-rw-r--r-- | examples/extract.pl | 39 |
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; +} |