zlib.html
来自「perl教程」· HTML 代码 · 共 956 行 · 第 1/4 页
HTML
956 行
<?xml version="1.0" ?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<!-- saved from url=(0017)http://localhost/ -->
<script language="JavaScript" src="../../displayToc.js"></script>
<script language="JavaScript" src="../../tocParas.js"></script>
<script language="JavaScript" src="../../tocTab.js"></script>
<link rel="stylesheet" type="text/css" href="../../scineplex.css">
<title>Compress::Zlib - Interface to zlib compression library</title>
<link rel="stylesheet" href="../../Active.css" type="text/css" />
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<link rev="made" href="mailto:" />
</head>
<body>
<script>writelinks('__top__',2);</script>
<h1><a>Compress::Zlib - Interface to zlib compression library</a></h1>
<p><a name="__index__"></a></p>
<!-- INDEX BEGIN -->
<ul>
<li><a href="#name">NAME</a></li>
<li><a href="#synopsis">SYNOPSIS</a></li>
<li><a href="#description">DESCRIPTION</a></li>
<li><a href="#deflate">DEFLATE</a></li>
<ul>
<li><a href="#__d___status____deflateinit___opt___"><strong>($d, $status) = deflateInit( [OPT] )</strong></a></li>
<li><a href="#__out___status_____d_deflate__buffer_"><strong>($out, $status) = $d->deflate($buffer)</strong></a></li>
<li><a href="#__out___status_____d_flush__flush_type__"><strong>($out, $status) = $d->flush([flush_type])</strong></a></li>
<li><a href="#_status____d_deflateparams__opt__"><strong>$status = $d->deflateParams([OPT])</strong></a></li>
<li><a href="#_d_dict_adler__"><strong>$d->dict_adler()</strong></a></li>
<li><a href="#_d_msg__"><strong>$d->msg()</strong></a></li>
<li><a href="#_d_total_in__"><strong>$d->total_in()</strong></a></li>
<li><a href="#_d_total_out__"><strong>$d->total_out()</strong></a></li>
<li><a href="#example">Example</a></li>
</ul>
<li><a href="#inflate">INFLATE</a></li>
<ul>
<li><a href="#__i___status____inflateinit__"><strong>($i, $status) = inflateInit()</strong></a></li>
<li><a href="#__out___status_____i_inflate__buffer_"><strong>($out, $status) = $i->inflate($buffer)</strong></a></li>
<li><a href="#_status____i_inflatesync__buffer_"><strong>$status = $i->inflateSync($buffer)</strong></a></li>
<li><a href="#_i_dict_adler__"><strong>$i->dict_adler()</strong></a></li>
<li><a href="#_i_msg__"><strong>$i->msg()</strong></a></li>
<li><a href="#_i_total_in__"><strong>$i->total_in()</strong></a></li>
<li><a href="#_i_total_out__"><strong>$i->total_out()</strong></a></li>
<li><a href="#example">Example</a></li>
</ul>
<li><a href="#compress_uncompress">COMPRESS/UNCOMPRESS</a></li>
<li><a href="#gzip_interface">GZIP INTERFACE</a></li>
<ul>
<li><a href="#examples">Examples</a></li>
<li><a href="#compress__zlib__memgzip">Compress::Zlib::memGzip</a></li>
<li><a href="#compress__zlib__memgunzip">Compress::Zlib::memGunzip</a></li>
</ul>
<li><a href="#checksum_functions">CHECKSUM FUNCTIONS</a></li>
<li><a href="#faq">FAQ</a></li>
<ul>
<li><a href="#compatibility_with_unix_compress_uncompress_">Compatibility with Unix compress/uncompress.</a></li>
<li><a href="#accessing__tar_z_files">Accessing .tar.Z files</a></li>
<li><a href="#accessing_zip_files">Accessing ZIP Files</a></li>
</ul>
<li><a href="#constants">CONSTANTS</a></li>
<li><a href="#author">AUTHOR</a></li>
<li><a href="#modification_history">MODIFICATION HISTORY</a></li>
</ul>
<!-- INDEX END -->
<hr />
<p>
</p>
<h1><a name="name">NAME</a></h1>
<p>Compress::Zlib - Interface to zlib compression library</p>
<p>
</p>
<hr />
<h1><a name="synopsis">SYNOPSIS</a></h1>
<pre>
<span class="keyword">use</span> <span class="variable">Compress::Zlib</span> <span class="operator">;</span>
</pre>
<pre>
<span class="operator">(</span><span class="variable">$d</span><span class="operator">,</span> <span class="variable">$status</span><span class="operator">)</span> <span class="operator">=</span> <span class="variable">deflateInit</span><span class="operator">(</span> <span class="operator">[</span><span class="variable">OPT</span><span class="operator">]</span> <span class="operator">)</span> <span class="operator">;</span>
<span class="operator">(</span><span class="variable">$out</span><span class="operator">,</span> <span class="variable">$status</span><span class="operator">)</span> <span class="operator">=</span> <span class="variable">$d</span><span class="operator">-></span><span class="variable">deflate</span><span class="operator">(</span><span class="variable">$buffer</span><span class="operator">)</span> <span class="operator">;</span>
<span class="variable">$status</span> <span class="operator">=</span> <span class="variable">$d</span><span class="operator">-></span><span class="variable">deflateParams</span><span class="operator">(</span><span class="operator">[</span><span class="variable">OPT</span><span class="operator">]</span><span class="operator">)</span> <span class="operator">;</span>
<span class="operator">(</span><span class="variable">$out</span><span class="operator">,</span> <span class="variable">$status</span><span class="operator">)</span> <span class="operator">=</span> <span class="variable">$d</span><span class="operator">-></span><span class="variable">flush</span><span class="operator">()</span> <span class="operator">;</span>
<span class="variable">$d</span><span class="operator">-></span><span class="variable">dict_adler</span><span class="operator">()</span> <span class="operator">;</span>
<span class="variable">$d</span><span class="operator">-></span><span class="variable">total_in</span><span class="operator">()</span> <span class="operator">;</span>
<span class="variable">$d</span><span class="operator">-></span><span class="variable">total_out</span><span class="operator">()</span> <span class="operator">;</span>
<span class="variable">$d</span><span class="operator">-></span><span class="variable">msg</span><span class="operator">()</span> <span class="operator">;</span>
</pre>
<pre>
<span class="operator">(</span><span class="variable">$i</span><span class="operator">,</span> <span class="variable">$status</span><span class="operator">)</span> <span class="operator">=</span> <span class="variable">inflateInit</span><span class="operator">(</span> <span class="operator">[</span><span class="variable">OPT</span><span class="operator">]</span> <span class="operator">)</span> <span class="operator">;</span>
<span class="operator">(</span><span class="variable">$out</span><span class="operator">,</span> <span class="variable">$status</span><span class="operator">)</span> <span class="operator">=</span> <span class="variable">$i</span><span class="operator">-></span><span class="variable">inflate</span><span class="operator">(</span><span class="variable">$buffer</span><span class="operator">)</span> <span class="operator">;</span>
<span class="variable">$status</span> <span class="operator">=</span> <span class="variable">$i</span><span class="operator">-></span><span class="variable">inflateSync</span><span class="operator">(</span><span class="variable">$buffer</span><span class="operator">)</span> <span class="operator">;</span>
<span class="variable">$i</span><span class="operator">-></span><span class="variable">dict_adler</span><span class="operator">()</span> <span class="operator">;</span>
<span class="variable">$i</span><span class="operator">-></span><span class="variable">total_in</span><span class="operator">()</span> <span class="operator">;</span>
<span class="variable">$i</span><span class="operator">-></span><span class="variable">total_out</span><span class="operator">()</span> <span class="operator">;</span>
<span class="variable">$i</span><span class="operator">-></span><span class="variable">msg</span><span class="operator">()</span> <span class="operator">;</span>
</pre>
<pre>
<span class="variable">$dest</span> <span class="operator">=</span> <span class="variable">compress</span><span class="operator">(</span><span class="variable">$source</span><span class="operator">,</span> <span class="operator">[</span><span class="variable">$level</span><span class="operator">]</span><span class="operator">)</span> <span class="operator">;</span>
<span class="variable">$dest</span> <span class="operator">=</span> <span class="variable">uncompress</span><span class="operator">(</span><span class="variable">$source</span><span class="operator">)</span> <span class="operator">;</span>
</pre>
<pre>
<span class="variable">$gz</span> <span class="operator">=</span> <span class="variable">gzopen</span><span class="operator">(</span><span class="variable">$filename</span> <span class="keyword">or</span> <span class="variable">filehandle</span><span class="operator">,</span> <span class="variable">$mode</span><span class="operator">)</span> <span class="operator">;</span>
<span class="variable">$bytesread</span> <span class="operator">=</span> <span class="variable">$gz</span><span class="operator">-></span><span class="variable">gzread</span><span class="operator">(</span><span class="variable">$buffer</span> <span class="operator">[</span><span class="operator">,</span><span class="variable">$size</span><span class="operator">]</span><span class="operator">)</span> <span class="operator">;</span>
<span class="variable">$bytesread</span> <span class="operator">=</span> <span class="variable">$gz</span><span class="operator">-></span><span class="variable">gzreadline</span><span class="operator">(</span><span class="variable">$line</span><span class="operator">)</span> <span class="operator">;</span>
<span class="variable">$byteswritten</span> <span class="operator">=</span> <span class="variable">$gz</span><span class="operator">-></span><span class="variable">gzwrite</span><span class="operator">(</span><span class="variable">$buffer</span><span class="operator">)</span> <span class="operator">;</span>
<span class="variable">$status</span> <span class="operator">=</span> <span class="variable">$gz</span><span class="operator">-></span><span class="variable">gzflush</span><span class="operator">(</span><span class="variable">$flush</span><span class="operator">)</span> <span class="operator">;</span>
<span class="variable">$status</span> <span class="operator">=</span> <span class="variable">$gz</span><span class="operator">-></span><span class="variable">gzclose</span><span class="operator">()</span> <span class="operator">;</span>
<span class="variable">$status</span> <span class="operator">=</span> <span class="variable">$gz</span><span class="operator">-></span><span class="variable">gzeof</span><span class="operator">()</span> <span class="operator">;</span>
<span class="variable">$status</span> <span class="operator">=</span> <span class="variable">$gz</span><span class="operator">-></span><span class="variable">gzsetparams</span><span class="operator">(</span><span class="variable">$level</span><span class="operator">,</span> <span class="variable">$strategy</span><span class="operator">)</span> <span class="operator">;</span>
<span class="variable">$errstring</span> <span class="operator">=</span> <span class="variable">$gz</span><span class="operator">-></span><span class="variable">gzerror</span><span class="operator">()</span> <span class="operator">;</span>
<span class="variable">$gzerrno</span>
</pre>
<pre>
<span class="variable">$dest</span> <span class="operator">=</span> <span class="variable">Compress::Zlib::memGzip</span><span class="operator">(</span><span class="variable">$buffer</span><span class="operator">)</span> <span class="operator">;</span>
<span class="variable">$dest</span> <span class="operator">=</span> <span class="variable">Compress::Zlib::memGunzip</span><span class="operator">(</span><span class="variable">$buffer</span><span class="operator">)</span> <span class="operator">;</span>
</pre>
<pre>
<span class="variable">$crc</span> <span class="operator">=</span> <span class="variable">adler32</span><span class="operator">(</span><span class="variable">$buffer</span> <span class="operator">[</span><span class="operator">,</span><span class="variable">$crc</span><span class="operator">]</span><span class="operator">)</span> <span class="operator">;</span>
<span class="variable">$crc</span> <span class="operator">=</span> <span class="variable">crc32</span><span class="operator">(</span><span class="variable">$buffer</span> <span class="operator">[</span><span class="operator">,</span><span class="variable">$crc</span><span class="operator">]</span><span class="operator">)</span> <span class="operator">;</span>
</pre>
<pre>
ZLIB_VERSION</pre>
<p>
</p>
<hr />
<h1><a name="description">DESCRIPTION</a></h1>
<p>The <em>Compress::Zlib</em> module provides a Perl interface to the <em>zlib</em>
compression library (see <a href="#author">AUTHOR</a> for details about where to get
<em>zlib</em>). Most of the functionality provided by <em>zlib</em> is available
in <em>Compress::Zlib</em>.</p>
<p>The module can be split into two general areas of functionality, namely
in-memory compression/decompression and read/write access to <em>gzip</em>
files. Each of these areas will be discussed separately below.</p>
<p>
</p>
<hr />
<h1><a name="deflate">DEFLATE</a></h1>
<p>The interface <em>Compress::Zlib</em> provides to the in-memory <em>deflate</em>
(and <em>inflate</em>) functions has been modified to fit into a Perl model.</p>
<p>The main difference is that for both inflation and deflation, the Perl
interface will <em>always</em> consume the complete input buffer before
returning. Also the output buffer returned will be automatically grown
to fit the amount of output available.</p>
<p>Here is a definition of the interface available:</p>
<p>
</p>
<h2><a name="__d___status____deflateinit___opt___"><strong>($d, $status) = deflateInit( [OPT] )</strong></a></h2>
<p>Initialises a deflation stream.</p>
<p>It combines the features of the <em>zlib</em> functions <strong>deflateInit</strong>,
<strong>deflateInit2</strong> and <strong>deflateSetDictionary</strong>.</p>
<p>If successful, it will return the initialised deflation stream, <strong>$d</strong>
and <strong>$status</strong> of <code>Z_OK</code> in a list context. In scalar context it
returns the deflation stream, <strong>$d</strong>, only.</p>
<p>If not successful, the returned deflation stream (<strong>$d</strong>) will be
<em>undef</em> and <strong>$status</strong> will hold the exact <em>zlib</em> error code.</p>
<p>The function optionally takes a number of named options specified as
<code>-Name=>value</code> pairs. This allows individual options to be
tailored without having to specify them all in the parameter list.</p>
<p>For backward compatibility, it is also possible to pass the parameters
as a reference to a hash containing the name=>value pairs.</p>
<p>The function takes one optional parameter, a reference to a hash. The
contents of the hash allow the deflation interface to be tailored.</p>
<p>Here is a list of the valid options:</p>
<dl>
<dt><strong><a name="item__2dlevel"><strong>-Level</strong></a></strong>
<dd>
<p>Defines the compression level. Valid values are 0 through 9,
<code>Z_NO_COMPRESSION</code>, <code>Z_BEST_SPEED</code>, <code>Z_BEST_COMPRESSION</code>, and
<code>Z_DEFAULT_COMPRESSION</code>.</p>
</dd>
<dd>
<p>The default is <code>-Level =>Z_DEFAULT_COMPRESSION</code>.</p>
</dd>
</li>
<dt><strong><a name="item__2dmethod"><strong>-Method</strong></a></strong>
<dd>
<p>Defines the compression method. The only valid value at present (and
the default) is <code>-Method =>Z_DEFLATED</code>.</p>
</dd>
</li>
<dt><strong><a name="item__2dwindowbits"><strong>-WindowBits</strong></a></strong>
<dd>
<p>For a definition of the meaning and valid values for <strong>WindowBits</strong>
refer to the <em>zlib</em> documentation for <em>deflateInit2</em>.</p>
</dd>
<dd>
<p>Defaults to <code>-WindowBits =>MAX_WBITS</code>.</p>
</dd>
</li>
<dt><strong><a name="item__2dmemlevel"><strong>-MemLevel</strong></a></strong>
<dd>
<p>For a definition of the meaning and valid values for <strong>MemLevel</strong>
refer to the <em>zlib</em> documentation for <em>deflateInit2</em>.</p>
</dd>
<dd>
<p>Defaults to <code>-MemLevel =>MAX_MEM_LEVEL</code>.</p>
</dd>
</li>
<dt><strong><a name="item__2dstrategy"><strong>-Strategy</strong></a></strong>
<dd>
<p>Defines the strategy used to tune the compression. The valid values are
<code>Z_DEFAULT_STRATEGY</code>, <code>Z_FILTERED</code> and <code>Z_HUFFMAN_ONLY</code>.</p>
</dd>
<dd>
<p>The default is <code>-Strategy =>Z_DEFAULT_STRATEGY</code>.</p>
</dd>
</li>
<dt><strong><a name="item__2ddictionary"><strong>-Dictionary</strong></a></strong>
<dd>
<p>When a dictionary is specified <em>Compress::Zlib</em> will automatically
call <strong>deflateSetDictionary</strong> directly after calling <strong>deflateInit</strong>. The
Adler32 value for the dictionary can be obtained by calling the method
<code>$d-</code>dict_adler()>.</p>
</dd>
<dd>
<p>The default is no dictionary.</p>
</dd>
</li>
<dt><strong><a name="item__2dbufsize"><strong>-Bufsize</strong></a></strong>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?