diff options
author | Lorry Tar Creator <lorry-tar-importer@lorry> | 2015-07-31 18:59:09 +0000 |
---|---|---|
committer | Lorry Tar Creator <lorry-tar-importer@lorry> | 2015-07-31 18:59:09 +0000 |
commit | 42c8b23669eac442a303190dad44d78cea63cf59 (patch) | |
tree | 1cc49a1a1813bd802988e88058f353a4e0a23514 /examples/updateZip.pl | |
download | Archive-Zip-tarball-master.tar.gz |
Archive-Zip-1.49HEADArchive-Zip-1.49master
Diffstat (limited to 'examples/updateZip.pl')
-rw-r--r-- | examples/updateZip.pl | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/examples/updateZip.pl b/examples/updateZip.pl new file mode 100644 index 0000000..6b87d23 --- /dev/null +++ b/examples/updateZip.pl @@ -0,0 +1,33 @@ +# Shows how to update a Zip in place using a temp file. +# $Revision: 1.1 $ +# +use Archive::Zip qw(:ERROR_CODES); +use File::Copy(); + +my $zipName = shift || die 'must provide a zip name'; +my @fileNames = @ARGV; +die 'must provide file names' unless scalar(@fileNames); + +# Read the zip +my $zip = Archive::Zip->new(); +die "can't read $zipName\n" unless $zip->read($zipName) == AZ_OK; + +# Update the zip +foreach my $file (@fileNames) { + $zip->removeMember($file); + if (-r $file) { + if (-f $file) { + $zip->addFile($file) or die "Can't add $file to zip!\n"; + } elsif (-d $file) { + $zip->addDirectory($file) or die "Can't add $file to zip!\n"; + } else { + warn "Don't know how to add $file\n"; + } + } else { + warn "Can't read $file\n"; + } +} + +# Now the zip is updated. Write it back via a temp file. + +exit($zip->overwrite()); |