Perl
Perl
Unzip Some Files by Iterating over Entries
See more Zip Examples
Demonstrates how to unzip specific files by iterating over entries in a .zip.Chilkat Perl Downloads
use chilkat();
$success = 0;
# This requires the Chilkat API to have been previously unlocked.
# See Global Unlock Sample for sample code.
$zip = chilkat::CkZip->new();
# Open a .zip containing:
#
# a1.xml
# b1.xml
# c1.xml
# dir1/a2.xml
# dir1/c2.xml
# dir2/dir3/c3.xml
# We wish to unzip only a1.xml, b1.xml, and c1.xml
$success = $zip->OpenZip("qa_data/zips/xml_files.zip");
if ($success == 0) {
print $zip->lastErrorText() . "\r\n";
exit;
}
$sbFilename = chilkat::CkStringBuilder->new();
$entry = chilkat::CkZipEntry->new();
$numEntries = $zip->get_NumEntries();
$i = 0;
while ($i < $numEntries) {
$zip->EntryAt($i,$entry);
$entryFilePath = $entry->fileName();
print $entryFilePath . "\r\n";
if ($entry->get_IsDirectory() == 0) {
$sbFilename->SetString($entryFilePath);
if ($sbFilename->Contains("/",0) == 0) {
# Does not contain "/"
# Unzip to the qa_output directory.
$success = $entry->Extract("qa_output");
if ($success == 0) {
print "Failed to unzip " . $entryFilePath . "\r\n";
}
else {
print "Unzipped " . $entryFilePath . "\r\n";
}
}
}
$i = $i + 1;
}