NAME

Archive::SCS::Zip - ZIP format handler

SYNOPSIS

my $path = Path::Tiny->new('.../mod.scs');
my $archive = Archive::SCS::Zip->new(path => $path)->mount;

$archive->read_dir_tree;
my @contents = sort $archive->list_dirs, $archive->list_files;

my $hash = Archive::SCS::CityHash::cityhash64('manifest.sii');
my $data = $archive->read_entry($hash);

DESCRIPTION

Represents an SCS archive stored in ZIP file format.

Hash values used with this module must be in the internal format (currently, a 16-byte hex scalar in network byte order).

METHODS

entries

$entry_hashes = $archive->entries;

is_mounted

$bool = $archive->is_mounted;

handles_path

$bool = Archive::SCS::Zip->handles_file($fh, $header);

list_dirs

@directories = $archive->list_dirs;

list_files

@files = $archive->list_files;

mount

$archive = $archive->mount;

new

$archive = Archive::SCS::Zip->new(file => $path_tiny);

path

$path_tiny = $archive->path;

read_dir_tree

$archive->read_dir_tree;

read_entry

$data = $archive->read_entry($hash);

unmount

$archive->unmount;

LIMITATIONS

Mounting an archive reads all contents into memory, which can be inefficient for large ZIP files on slow disks.

Some invalid (and, rarely, valid) ZIP files that are accepted by SCS's software cannot be mounted by this module. However, all plain ZIP files that conform to the "appnote" spec should work just fine.

AUTHOR

nautofon

COPYRIGHT

This software is copyright (c) 2025 by nautofon.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.