NAME Archive::Libarchive::Compress - Recursively archive a directory (using libarchive) VERSION version 0.01 SYNOPSIS use Archive::Libarchive::Compress; my $w = Archive::Libarchive::Compress->new( filename => 'foo.tar' ); $w->compress( from => '.' ); DESCRIPTION This module recursively archives a directory to either a file or to memory. This module does not store directory structure, just the files, so an empty directory will not be represented in the resulting archive. CONSTRUCTOR new my $w = Archive::Libarchive::Compress->new(%args); Exactly one of filename and memory are required. All other arguments are optional. entry Callback function called for each entry before it is written to the archive. The entry is passed in as an instance of Archive::Libarchive::Entry. If this callback returns a false value, then the entry will not be written to the archive. my $w = Archive::Libarchive::Compress->new( filename => 'foo.tar', entry => sub ($e) { # skip "hidden" files return $e->pathname !~ /^\./; }, ) You may also modify the entry, before it gets written. This can be useful for modifying stored file properties like the owner, group or permissions that you may not want in the archive. filename The name of the archive filename to create. memory Scalar reference which will be used as a buffer to write the archive to memory. This scalar does not have to be pre-allocated, so this will work: my $out = ''; my $w = Archive::Libarchive::Compress->new( memory => \$out ); prep Callback function called before the archive has been opened. An instance of Archive::Libarchive::ArchiveWrite will be passed in. This is useful for specifying a format for the archive. If not provided, then pax restricted format will be used. (This is uncompressed and widely supported). If you wanted to for example use GNU tar format compressed with bzip2: my $w = Archive::Libarchive::Compress->new( filename => 'foo.tar.bz2', prep => sub ($archive) { $archive->set_format_gnutar; $archive->add_filter_bzip2; }, ); See Archive::Libarchive::ArchiveWrite for more details. METHODS filename my $filename = $w->filename; Returns the Archive filename. from my $from = $w->from; Returns the directory that was archived. If "compress" hasn't been called yet, then it will return undef. compress $w->compress( from => $dir ); $w->compress; Recursively archives the directory. If $dir is not provided, then the current directory will be used. AUTHOR Graham Ollis COPYRIGHT AND LICENSE This software is copyright (c) 2024 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.