NAME

Archive::Libarchive::Peek - Peek into archives without extracting them

VERSION

version 0.01

SYNOPSIS

use Archive::Libarchive::Peek;
my $peek = Archive::Libarchive::Peek->new( filename => 'archive.tar' );
my @files = $peek->files();
my $contents = $peek->file('README.txt')

DESCRIPTION

This module lets you peek into archives without extracting them. It is based on Archive::Peek, but it uses Archive::Libarchive, and thus all of the many formats supported by libarchive. It also supports some unique features of the various classes that use the "Peek" style interface:

Many Many formats

compressed tar, Zip, RAR, ISO 9660 images, etc.

Zips with encrypted entries

You can specify the passphrase or a passphrase callback with the constructor

Multi-file RAR archives

If filename is an array reference it will be assumed to be a list of filenames representing a single multi-file archive.

CONSTRUCTOR

new

my $peek = Archive::Libarchive::Peek->new(%options);

This creates a new instance of the Peek object.

filename
my $peek = Archive::Libarchive::Peek->new( filename => $filename );

This option is required, and is the filename of the archive.

passphrase
my $peek = Archive::Libarchive::Peek->new( passphrase => $passphrase );
my $peek = Archive::Libarchive::Peek->new( passphrase => sub {
  ...
  return $passphrase;
});

This option is the passphrase for encrypted zip entries, or a callback which will return the passphrase.

PROPERTIES

filename

This is the archive filename for the Peek object.

METHODS

files

my @files = $peek->files;

This method returns the filenames of the entries in the archive.

file

my $content = $peek->file($filename);

This method files the filename in the archive and returns its content.

iterate

$peek->iterate(sub ($filename, $content, $e) {
  ...
});

This method iterates over the entries in the archive and calls the callback for each entry. The arguments are:

filename

The filename of the entry

content

The content of the entry, or '' for non-regular or zero-sized files

entry

This is a Archive::Libarchive::Entry instance which has metadata about the file, like the permissions, timestamps and file type.

SEE ALSO

Archive::Peek

The original!

Archive::Peek::External

Another implementation that uses external commands to peek into archives

Archive::Peek::Libarchive

Another implementation that also relies on libarchive, but doesn't support the file type in iterate mode, encrypted zip entries, or multi-file RAR archives.

Archive::Libarchive

A lower-level interface to libarchive which can be used to read/extract and create archives of various formats.

AUTHOR

Graham Ollis <plicease@cpan.org>

COPYRIGHT AND LICENSE

This software is copyright (c) 2021 by Graham Ollis.

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