IO::Uncompress::Untar - Pure-perl extension to read tar (and tgz and .tar.bz2 etc) files/buffers
#!/usr/bin/perl -w use strict; use warnings; use IO::Uncompress::Untar qw($UntarError); my $u = new IO::Uncompress::Untar *STDIN or die "Cannot open"; # Prints the names of all the files in the tar / tgz / tar.bz2 / etc. my $status; for ($status = 1; $status > 0; $status = $u->nextStream()) { my $hdr = $u->getHeaderInfo(); my $fn = $hdr->{Name}; last if(!defined $fn); my @sz= ref $hdr->{UncompressedLength} ? @{$hdr->{UncompressedLength}} : ($hdr->{UncompressedLength}); my $buff; while (($status = $u->read($buff)) > 0) { # Do something here } print "$hdr->{Time}\t$sz[0]\t$fn\n"; last if $status < 0; } # for status
This module provides a minimal pure-Perl interface that allows the reading of tar files/buffers. It maintains basic compatability/functionality of IO::Uncompress::Unzip
None by default.
Only these are implimented: new nextStream getHeaderInfo read
my $u = new IO::Uncompress::Untar *STDIN or die "Cannot open"; my $u = new IO::Uncompress::Untar 'somefile.tgz' or die "Cannot open";
Uses AnyUncompress internally, so the stream or file can be a plain tar, or a gzip, bzip2, Z, or anything else compressed that AnyUncompress knows.
Usage is
$status = $z->read($buffer, $length) $status = $z->read($buffer, $length, $offset) $status = read($z, $buffer, $length) $status = read($z, $buffer, $length, $offset)
Attempt to read $length bytes of uncompressed data into $buffer.
$length
$buffer
$hdr = $z->getHeaderInfo(); @hdrs = $z->getHeaderInfo();
This method returns a hash reference (in scalar context) that contains information about the current file
my $status = $z->nextStream();
Skips to the next compressed data stream in the input file/buffer. If a new compressed data stream is found, the eof marker will be cleared and $. will be reset to 0.
$.
Returns 1 if a new stream was found, 0 if none was found, and -1 if an error was encountered.
Compress::Zlib, IO::Compress::Gzip, IO::Uncompress::Gunzip, IO::Compress::Deflate, IO::Uncompress::Inflate, IO::Compress::RawDeflate, IO::Uncompress::RawInflate, IO::Compress::Bzip2, IO::Uncompress::Bunzip2, IO::Compress::Lzma, IO::Uncompress::UnLzma, IO::Compress::Xz, IO::Uncompress::UnXz, IO::Compress::Lzop, IO::Uncompress::UnLzop, IO::Compress::Lzf, IO::Uncompress::UnLzf, IO::Uncompress::AnyInflate, IO::Uncompress::AnyUncompress
IO::Compress::FAQ
File::GlobMapper, Archive::Zip, Archive::Tar, IO::Zlib
This module was written by Chris Drake cdrake@cpan.org.
Copyright (c) 2019 Chris Drake. All rights reserved.
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.18.2 or, at your option, any later version of Perl 5 you may have available.
To install IO::Uncompress::Untar, copy and paste the appropriate command in to your terminal.
cpanm
cpanm IO::Uncompress::Untar
CPAN shell
perl -MCPAN -e shell install IO::Uncompress::Untar
For more information on module installation, please visit the detailed CPAN module installation guide.