diff options
Diffstat (limited to 'examples/calcSizes.pl')
-rw-r--r-- | examples/calcSizes.pl | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/examples/calcSizes.pl b/examples/calcSizes.pl new file mode 100644 index 0000000..9fd9e0b --- /dev/null +++ b/examples/calcSizes.pl @@ -0,0 +1,31 @@ +# Example of how to compute compressed sizes +# $Revision: 1.2 $ +use strict; +use Archive::Zip qw(:ERROR_CODES); +use File::Spec; +my $zip = Archive::Zip->new(); +my $blackHoleDevice = File::Spec->devnull(); + +$zip->addFile($_) foreach (<*.pl>); + +# Write and throw the data away. +# after members are written, the writeOffset will be set +# to the compressed size. +$zip->writeToFileNamed($blackHoleDevice); + +my $totalSize = 0; +my $totalCompressedSize = 0; +foreach my $member ($zip->members()) { + $totalSize += $member->uncompressedSize; + $totalCompressedSize += $member->_writeOffset; + print "Member ", $member->externalFileName, + " size=", $member->uncompressedSize, + ", writeOffset=", $member->_writeOffset, + ", compressed=", $member->compressedSize, + "\n"; +} + +print "Total Size=", $totalSize, ", total compressed=", $totalCompressedSize, + "\n"; + +$zip->writeToFileNamed('test.zip'); |