📄 anyinflate.pm
字号:
AUTOCLOSE autocloseOPTS is a combination of the following options:=over 5=item C<< AutoClose => 0|1 >>This option is only valid when the C<$input> parameter is a filehandle. Ifspecified, and the value is true, it will result in the file being closed onceeither the C<close> method is called or the IO::Uncompress::AnyInflate object isdestroyed.This parameter defaults to 0.=item C<< MultiStream => 0|1 >>Allows multiple concatenated compressed streams to be treated as a singlecompressed stream. Decompression will stop once either the end of thefile/buffer is reached, an error is encountered (premature eof, corruptcompressed data) or the end of a stream is not immediately followed by thestart of another stream.This parameter defaults to 0.=item C<< Prime => $string >>This option will uncompress the contents of C<$string> before processing theinput file/buffer.This option can be useful when the compressed data is embedded in anotherfile/data structure and it is not possible to work out where the compresseddata begins without having to read the first few bytes. If this is thecase, the uncompression can be I<primed> with these bytes using thisoption.=item C<< Transparent => 0|1 >>If this option is set and the input file/buffer is not compressed data,the module will allow reading of it anyway.In addition, if the input file/buffer does contain compressed data andthere is non-compressed data immediately following it, setting this optionwill make this module treat the whole file/bufffer as a single data stream.This option defaults to 1.=item C<< BlockSize => $num >>When reading the compressed input data, IO::Uncompress::AnyInflate will read it inblocks of C<$num> bytes.This option defaults to 4096.=item C<< InputLength => $size >>When present this option will limit the number of compressed bytes readfrom the input file/buffer to C<$size>. This option can be used in thesituation where there is useful data directly after the compressed datastream and you know beforehand the exact length of the compressed datastream. This option is mostly used when reading from a filehandle, in which casethe file pointer will be left pointing to the first byte directly after thecompressed data stream.This option defaults to off.=item C<< Append => 0|1 >>This option controls what the C<read> method does with uncompressed data.If set to 1, all uncompressed data will be appended to the output parameterof the C<read> method.If set to 0, the contents of the output parameter of the C<read> methodwill be overwritten by the uncompressed data.Defaults to 0.=item C<< Strict => 0|1 >>This option controls whether the extra checks defined below are used whencarrying out the decompression. When Strict is on, the extra tests arecarried out, when Strict is off they are not.The default for this option is off.If the input is an RFC 1950 data stream, the following will be checked:=over 5=item 1The ADLER32 checksum field must be present.=item 2The value of the ADLER32 field read must match the adler32 value of theuncompressed data actually contained in the file.=backIf the input is a gzip (RFC 1952) data stream, the following will be checked:=over 5=item 1 If the FHCRC bit is set in the gzip FLG header byte, the CRC16 bytes in theheader must match the crc16 value of the gzip header actually read.=item 2If the gzip header contains a name field (FNAME) it consists solely of ISO8859-1 characters.=item 3If the gzip header contains a comment field (FCOMMENT) it consists solelyof ISO 8859-1 characters plus line-feed.=item 4If the gzip FEXTRA header field is present it must conform to the sub-fieldstructure as defined in RFC 1952.=item 5The CRC32 and ISIZE trailer fields must be present.=item 6The value of the CRC32 field read must match the crc32 value of theuncompressed data actually contained in the gzip file.=item 7The value of the ISIZE fields read must match the length of theuncompressed data actually read from the file.=back=item C<< RawInflate => 0|1 >>When auto-detecting the compressed format, try to test for raw-deflate (RFC1951) content using the C<IO::Uncompress::RawInflate> module. The reason this is not default behaviour is because RFC 1951 content canonly be detected by attempting to uncompress it. This process is errorprone and can result is false positives.Defaults to 0.=item C<< ParseExtra => 0|1 >>If the gzip FEXTRA header field is present and this option is set, it willforce the module to check that it conforms to the sub-field structure asdefined in RFC 1952.If the C<Strict> is on it will automatically enable this option.Defaults to 0.=back=head2 ExamplesTODO=head1 Methods =head2 readUsage is $status = $z->read($buffer)Reads a block of compressed data (the size the the compressed block isdetermined by the C<Buffer> option in the constructor), uncompresses it andwrites any uncompressed data into C<$buffer>. If the C<Append> parameter isset in the constructor, the uncompressed data will be appended to theC<$buffer> parameter. Otherwise C<$buffer> will be overwritten.Returns the number of uncompressed bytes written to C<$buffer>, zero if eofor a negative number on error.=head2 readUsage 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 C<$length> bytes of uncompressed data into C<$buffer>.The main difference between this form of the C<read> method and theprevious one, is that this one will attempt to return I<exactly> C<$length>bytes. The only circumstances that this function will not is if end-of-fileor an IO error is encountered.Returns the number of uncompressed bytes written to C<$buffer>, zero if eofor a negative number on error.=head2 getlineUsage is $line = $z->getline() $line = <$z>Reads a single line. This method fully supports the use of of the variable C<$/> (orC<$INPUT_RECORD_SEPARATOR> or C<$RS> when C<English> is in use) todetermine what constitutes an end of line. Paragraph mode, record mode andfile slurp mode are all supported. =head2 getcUsage is $char = $z->getc()Read a single character.=head2 ungetcUsage is $char = $z->ungetc($string)=head2 inflateSyncUsage is $status = $z->inflateSync()TODO=head2 getHeaderInfoUsage is $hdr = $z->getHeaderInfo(); @hdrs = $z->getHeaderInfo();This method returns either a hash reference (in scalar context) or a listor hash references (in array context) that contains information about eachof the header fields in the compressed data stream(s).=head2 tellUsage is $z->tell() tell $zReturns the uncompressed file offset.=head2 eofUsage is $z->eof(); eof($z);Returns true if the end of the compressed input stream has been reached.=head2 seek $z->seek($position, $whence); seek($z, $position, $whence);Provides a sub-set of the C<seek> functionality, with the restrictionthat it is only legal to seek forward in the input file/buffer.It is a fatal error to attempt to seek backward.The C<$whence> parameter takes one the usual values, namely SEEK_SET,SEEK_CUR or SEEK_END.Returns 1 on success, 0 on failure.=head2 binmodeUsage is $z->binmode binmode $z ;This is a noop provided for completeness.=head2 opened $z->opened()Returns true if the object currently refers to a opened file/buffer. =head2 autoflush my $prev = $z->autoflush() my $prev = $z->autoflush(EXPR)If the C<$z> object is associated with a file or a filehandle, this methodreturns the current autoflush setting for the underlying filehandle. IfC<EXPR> is present, and is non-zero, it will enable flushing after everywrite/print operation.If C<$z> is associated with a buffer, this method has no effect and alwaysreturns C<undef>.B<Note> that the special variable C<$|> B<cannot> be used to set orretrieve the autoflush setting.=head2 input_line_number $z->input_line_number() $z->input_line_number(EXPR)Returns the current uncompressed line number. If C<EXPR> is present it hasthe effect of setting the line number. Note that setting the line numberdoes not change the current position within the file/buffer being read.The contents of C<$/> are used to to determine what constitutes a lineterminator.=head2 fileno $z->fileno() fileno($z)If the C<$z> object is associated with a file or a filehandle, this methodwill return the underlying file descriptor.If the C<$z> object is is associated with a buffer, this method willreturn undef.=head2 close $z->close() ; close $z ;Closes the output file/buffer. For most versions of Perl this method will be automatically invoked ifthe IO::Uncompress::AnyInflate object is destroyed (either explicitly or by thevariable with the reference to the object going out of scope). Theexceptions are Perl versions 5.005 through 5.00504 and 5.8.0. Inthese cases, the C<close> method will be called automatically, butnot until global destruction of all live objects when the program isterminating.Therefore, if you want your scripts to be able to run on all versionsof Perl, you should call C<close> explicitly and not rely on automaticclosing.Returns true on success, otherwise 0.If the C<AutoClose> option has been enabled when the IO::Uncompress::AnyInflateobject was created, and the object is associated with a file, theunderlying file will also be closed.=head2 nextStreamUsage is my $status = $z->nextStream();Skips to the next compressed data stream in the input file/buffer. If a newcompressed data stream is found, the eof marker will be cleared and C<$.>will be reset to 0.Returns 1 if a new stream was found, 0 if none was found, and -1 if anerror was encountered.=head2 trailingDataUsage is my $data = $z->trailingData();Returns the data, if any, that is present immediately after the compresseddata stream once uncompression is complete. It only makes sense to callthis method once the end of the compressed data stream has beenencountered.This option can be used when there is useful information immediatelyfollowing the compressed data stream, and you don't know the length of thecompressed data stream.If the input is a buffer, C<trailingData> will return everything from theend of the compressed data stream to the end of the buffer.If the input is a filehandle, C<trailingData> will return the data that isleft in the filehandle input buffer once the end of the compressed datastream has been reached. You can then use the filehandle to read the restof the input file. Don't bother using C<trailingData> if the input is a filename.If you know the length of the compressed data stream before you startuncompressing, you can avoid having to use C<trailingData> by setting theC<InputLength> option in the constructor.=head1 Importing No symbolic constants are required by this IO::Uncompress::AnyInflate at present. =over 5=item :allImports C<anyinflate> and C<$AnyInflateError>.Same as doing this use IO::Uncompress::AnyInflate qw(anyinflate $AnyInflateError) ;=back=head1 EXAMPLES=head1 SEE ALSOL<Compress::Zlib>, L<IO::Compress::Gzip>, L<IO::Uncompress::Gunzip>, L<IO::Compress::Deflate>, L<IO::Uncompress::Inflate>, L<IO::Compress::RawDeflate>, L<IO::Uncompress::RawInflate>, L<IO::Compress::Bzip2>, L<IO::Uncompress::Bunzip2>, L<IO::Compress::Lzop>, L<IO::Uncompress::UnLzop>, L<IO::Compress::Lzf>, L<IO::Uncompress::UnLzf>, L<IO::Uncompress::AnyUncompress>L<Compress::Zlib::FAQ|Compress::Zlib::FAQ>L<File::GlobMapper|File::GlobMapper>, L<Archive::Zip|Archive::Zip>,L<Archive::Tar|Archive::Tar>,L<IO::Zlib|IO::Zlib>For RFC 1950, 1951 and 1952 see F<http://www.faqs.org/rfcs/rfc1950.html>,F<http://www.faqs.org/rfcs/rfc1951.html> andF<http://www.faqs.org/rfcs/rfc1952.html>The I<zlib> compression library was written by Jean-loup GaillyF<gzip@prep.ai.mit.edu> and Mark Adler F<madler@alumni.caltech.edu>.The primary site for the I<zlib> compression library isF<http://www.zlib.org>.The primary site for gzip is F<http://www.gzip.org>.=head1 AUTHORThis module was written by Paul Marquess, F<pmqs@cpan.org>. =head1 MODIFICATION HISTORYSee the Changes file.=head1 COPYRIGHT AND LICENSECopyright (c) 2005-2007 Paul Marquess. All rights reserved.This program is free software; you can redistribute it and/ormodify it under the same terms as Perl itself.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -