The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

Changes for version 1.66

  • Refactored low-level methods for reading and writing zip files in zip64 format. Added new parameters and return values to most of these. Extended constants in Archive::Zip to cover zip64 formats and lengths.
  • Added public APIs Archive::Zip::Archive::zip64 Archive::Zip::Archive::desiredZip64Mode Archive::Zip::Archive::versionMadeBy Archive::Zip::Archive::versionNeededToExtract Archive::Zip::Member::zip64 Archive::Zip::Member::desiredZip64Mode and constants Archive::Zip::ZIP64_AS_NEEDED Archive::Zip::ZIP64_EOCD Archive::Zip::ZIP64_HEADERS plus POD on these.
  • Added tests for zip64 format in t/21_zip64.t and more test zip files below t/data. Extended tests in t/02_main.t to perform all existing tests in all possible desired zip64 modes.
  • Extended methods Archive::Zip::Member::localExtraField Archive::Zip::Member::cdExtraField to perform format checks when called as setters and to reject any zip64 extended information extra fields passed by the user. Extended POD and tests in t/02_main.t accordingly.
  • Setting {'compressedSize'} after writing central directory header.
  • Added new optional parameter $noFormatError to method Archive::Zip::_readSignature to silence any format errros when testing for signatures.
  • Added error handling for potentially failed object conversion after calling method Archive::Zip::Member::_become. Factored in method Archive::Zip::Member::_becomeDirectoryIfNecessary into caller.
  • Changed methods Archive::Zip::Archive::contents Archive::Zip::Member::contents (and all inheriting from these) to consistently return a pair ($contents, $status) when called in list context and a scalar $contents when called in scalar context. Extended tests in t/02_main.t accordingly.
  • Changed method Archive::Zip::Member::extractToFileHandle to accept a file name instead of a file handle when extracting symbolic links. Changed lower-level and higher-level methods to use that feature. Cleaned up code related to the handling of symbolic links. Added creation of intermediate directories in method Archive::Zip::Member::extractToFileNamed for symbolic links as well. Reporting errors from symlink call as AZ-error. Added POD and test zip file t/data/symlink.zip and tests in t/26_symlinks.t for these changes.
  • Cleaned up code and added comment related to that highly dubious (?) {'wasWritten'} logic.

Documentation

Answers to a few frequently asked questions about Archive::Zip

Modules

Provide an interface to ZIP archive files.
A wrapper that lets you read Zip archive members as if they were files.
(DEPRECATED) methods for adding/extracting trees using Archive::Zip

Provides

in lib/Archive/Zip/Archive.pm
in lib/Archive/Zip/BufferedFileHandle.pm
in lib/Archive/Zip/DirectoryMember.pm
in lib/Archive/Zip/FileMember.pm
in lib/Archive/Zip/Member.pm
in lib/Archive/Zip/MockFileHandle.pm
in lib/Archive/Zip/NewFileMember.pm
in lib/Archive/Zip/StringMember.pm
in lib/Archive/Zip/ZipFileMember.pm