⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rawinflate.pm

📁 视频监控网络部分的协议ddns,的模块的实现代码,请大家大胆指正.
💻 PM
📖 第 1 页 / 共 2 页
字号:
=item C<< TrailingData => $scalar >>Returns the data, if any, that is present immediately after the compresseddata stream once uncompression is complete. 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.=back=head2 ExamplesTo read the contents of the file C<file1.txt.1951> and write thecompressed data to the file C<file1.txt>.    use strict ;    use warnings ;    use IO::Uncompress::RawInflate qw(rawinflate $RawInflateError) ;    my $input = "file1.txt.1951";    my $output = "file1.txt";    rawinflate $input => $output        or die "rawinflate failed: $RawInflateError\n";To read from an existing Perl filehandle, C<$input>, and write theuncompressed data to a buffer, C<$buffer>.    use strict ;    use warnings ;    use IO::Uncompress::RawInflate qw(rawinflate $RawInflateError) ;    use IO::File ;    my $input = new IO::File "<file1.txt.1951"        or die "Cannot open 'file1.txt.1951': $!\n" ;    my $buffer ;    rawinflate $input => \$buffer         or die "rawinflate failed: $RawInflateError\n";To uncompress all files in the directory "/my/home" that match "*.txt.1951" and store the compressed data in the same directory    use strict ;    use warnings ;    use IO::Uncompress::RawInflate qw(rawinflate $RawInflateError) ;    rawinflate '</my/home/*.txt.1951>' => '</my/home/#1.txt>'        or die "rawinflate failed: $RawInflateError\n";and if you want to compress each file one at a time, this will do the trick    use strict ;    use warnings ;    use IO::Uncompress::RawInflate qw(rawinflate $RawInflateError) ;    for my $input ( glob "/my/home/*.txt.1951" )    {        my $output = $input;        $output =~ s/.1951// ;        rawinflate $input => $output             or die "Error compressing '$input': $RawInflateError\n";    }=head1 OO Interface=head2 ConstructorThe format of the constructor for IO::Uncompress::RawInflate is shown below    my $z = new IO::Uncompress::RawInflate $input [OPTS]        or die "IO::Uncompress::RawInflate failed: $RawInflateError\n";Returns an C<IO::Uncompress::RawInflate> object on success and undef on failure.The variable C<$RawInflateError> will contain an error message on failure.If you are running Perl 5.005 or better the object, C<$z>, returned fromIO::Uncompress::RawInflate can be used exactly like an L<IO::File|IO::File> filehandle.This means that all normal input file operations can be carried out withC<$z>.  For example, to read a line from a compressed file/buffer you canuse either of these forms    $line = $z->getline();    $line = <$z>;The mandatory parameter C<$input> is used to determine the source of thecompressed data. This parameter can take one of three forms.=over 5=item A filenameIf the C<$input> parameter is a scalar, it is assumed to be a filename. Thisfile will be opened for reading and the compressed data will be read from it.=item A filehandleIf the C<$input> parameter is a filehandle, the compressed data will beread from it.The string '-' can be used as an alias for standard input.=item A scalar reference If C<$input> is a scalar reference, the compressed data will be read fromC<$$output>.=back=head2 Constructor OptionsThe option names defined below are case insensitive and can be optionallyprefixed by a '-'.  So all of the following are valid    -AutoClose    -autoclose    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::RawInflate 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::RawInflate 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 is a no-op.=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::RawInflate 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::RawInflateobject 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::RawInflate at present. =over 5=item :allImports C<rawinflate> and C<$RawInflateError>.Same as doing this    use IO::Uncompress::RawInflate qw(rawinflate $RawInflateError) ;=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::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::AnyInflate>, 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 + -