summaryrefslogtreecommitdiff
path: root/examples/calcSizes.pl
diff options
context:
space:
mode:
Diffstat (limited to 'examples/calcSizes.pl')
-rw-r--r--examples/calcSizes.pl31
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');