內容

名稱

Compress::Zlib - zlib 壓縮函式庫介面

SYNOPSIS

use Compress::Zlib ;

($d, $status) = deflateInit( [OPT] ) ;
$status = $d->deflate($input, $output) ;
$status = $d->flush([$flush_type]) ;
$d->deflateParams(OPTS) ;
$d->deflateTune(OPTS) ;
$d->dict_adler() ;
$d->crc32() ;
$d->adler32() ;
$d->total_in() ;
$d->total_out() ;
$d->msg() ;
$d->get_Strategy();
$d->get_Level();
$d->get_BufSize();

($i, $status) = inflateInit( [OPT] ) ;
$status = $i->inflate($input, $output [, $eof]) ;
$status = $i->inflateSync($input) ;
$i->dict_adler() ;
$d->crc32() ;
$d->adler32() ;
$i->total_in() ;
$i->total_out() ;
$i->msg() ;
$d->get_BufSize();

$dest = compress($source) ;
$dest = uncompress($source) ;

$gz = gzopen($filename or filehandle, $mode) ;
$bytesread = $gz->gzread($buffer [,$size]) ;
$bytesread = $gz->gzreadline($line) ;
$byteswritten = $gz->gzwrite($buffer) ;
$status = $gz->gzflush($flush) ;
$offset = $gz->gztell() ;
$status = $gz->gzseek($offset, $whence) ;
$status = $gz->gzclose() ;
$status = $gz->gzeof() ;
$status = $gz->gzsetparams($level, $strategy) ;
$errstring = $gz->gzerror() ;
$gzerrno

$dest = Compress::Zlib::memGzip($buffer) ;
$dest = Compress::Zlib::memGunzip($buffer) ;

$crc = adler32($buffer [,$crc]) ;
$crc = crc32($buffer [,$crc]) ;

$crc = crc32_combine($crc1, $crc2, $len2);
$adler = adler32_combine($adler1, $adler2, $len2);

my $version = Compress::Raw::Zlib::zlib_version();

DESCRIPTION

Compress::Zlib 模組提供 Perl 介面給 zlib 壓縮函式庫(有關如何取得 zlib 的詳細資訊,請參閱 "AUTHOR")。

Compress::Zlib 模組可分為兩個一般功能區域,即 gzip 檔案的簡單讀取/寫入介面和低階記憶體內壓縮/解壓縮介面。

以下各節將討論這些區域。

Compress::Zlib 版本 1 使用者注意事項

Compress::Zlib 版本 2.x 的主要變更在於,它現在不會直接與 zlib 函式庫介接。相反地,它使用 IO::Compress::GzipIO::Uncompress::Gunzip 模組讀取/寫入 gzip 檔案,並使用 Compress::Raw::Zlib 模組進行一些低階 zlib 存取。

此模組版本 2 提供的介面應與版本 1 完全向下相容。如果您發現預期行為有差異,請聯絡作者(請參閱 "AUTHOR")。請參閱 "GZIP INTERFACE"

隨著 IO::CompressIO::Uncompress 模組的建立,Compress::Zlib 不再規劃任何新功能 - 新模組執行 Compress::Zlib 的所有功能,並提供更多功能。Compress::Zlib 的開發將僅限於修正錯誤。

如果您正在撰寫新程式碼,您應該首先使用其中一個新的 IO::CompressIO::Uncompress 模組。

GZIP 介面

zlib 中提供許多函式,用於讀取和寫入符合 RFC 1952 的 gzip 檔案。此模組提供大部分函式的介面。

如果您之前使用過 Compress::Zlib 1.x,則已對 gzopen 介面進行下列增強/變更

  1. 如果您想要使用 gzopen 開啟 STDIN 或 STDOUT,您現在可以選擇使用特殊檔名 "-" 作為 \*STDIN\*STDOUT 的同義詞。

  2. Compress::Zlib 版本 1.x 中,gzopen 使用 zlib 函式庫開啟基礎檔案。當 Perl 檔案控制代碼傳遞給 gzopen 時,這會讓事情變得特別棘手。在幕後,必須從 Perl 檔案控制代碼中擷取數字 C 檔案描述符,然後傳遞給 zlib 函式庫。

    除了無法移植到某些作業系統之外,這使得在需要從較大的檔案中擷取/建立嵌入式 gzip 資料串流,卻又不想重複開啟和關閉檔案的情況下,很難使用 gzopen

    這也使得無法傳遞未與實際檔案系統檔案關聯的 perl 檔案句柄,例如 IO::String

    Compress::Zlib 版本 2.x 中,gzopen 介面已完全改寫,以使用 IO::Compress::Gzip 來寫入 gzip 檔案,並使用 IO::Uncompress::Gunzip 來讀取 gzip 檔案。上述限制都不適用。

  3. 新增 gzseek 以提供受限的 seek 介面。

  4. 新增 gztell

IO-Compress-Zlib 模組包含更完整且更彈性的介面,用於讀取/寫入 gzip 檔案/緩衝區。請參閱 IO::Compress::GzipIO::Uncompress::Gunzip 以取得更多詳細資料。

$gz = gzopen($filename, $mode)
$gz = gzopen($filehandle, $mode)

此函式會開啟 gzip 檔案 $filename 以供讀取或寫入,或附加到已開啟的檔案句柄 $filehandle。如果成功,它會傳回一個物件,如果失敗,則傳回 undef

在寫入 gzip 檔案時,此介面永遠會建立最小的 gzip 標頭(剛好 10 個位元組)。如果您想要更進一步控制儲存在 gzip 標頭中的內容(例如原始檔名或註解),請改用 IO::Compress::Gzip。類似地,如果您想要讀取 gzip 標頭的內容,請使用 IO::Uncompress::Gunzip

第二個參數 $mode 用於指定檔案是開啟供讀取或寫入,以及在寫入時選擇性地指定壓縮層級和壓縮策略。$mode 參數的格式類似於 'C' 函式 fopen 的模式參數,因此「rb」用於開啟供讀取,「wb」用於寫入,「ab」用於附加(寫入檔案的結尾)。

要指定寫入時壓縮等級,在模式字串中附加 0 到 9 之間的數字,0 表示不壓縮,9 表示最大壓縮。如果未指定壓縮等級,將使用 Z_DEFAULT_COMPRESSION。

要指定寫入時壓縮策略,請附加「f」表示已過濾資料、「h」表示僅 Huffman 壓縮,或「R」表示執行長度編碼。如果未指定策略,將使用 Z_DEFAULT_STRATEGY。

因此,例如,「wb9」表示使用預設策略以最大壓縮開啟寫入,而「wb4R」表示使用壓縮等級 4 和執行長度編碼開啟寫入。

請參閱 zlib 文件,了解 $mode 參數的確切格式。

$bytesread = $gz->gzread($buffer [, $size]) ;

從壓縮檔案讀取 $size 位元組至 $buffer。如果未指定 $size,它將預設為 4096。如果純量 $buffer 不夠大,它將自動擴充。

傳回實際讀取的位元組數。在 EOF 時,它傳回 0,在發生錯誤時傳回 -1。

$bytesread = $gz->gzreadline($line) ;

從壓縮檔案讀取下一行至 $line

傳回實際讀取的位元組數。在 EOF 時,它傳回 0,在發生錯誤時傳回 -1。

可以將 gzreadgzreadline 的呼叫混用。

為了與此模組的 1.x 版維持向後相容性,gzreadline 會忽略 $/ 變數,它永遠使用字串 "\n" 作為行分隔符號。

如果您希望一次讀取一個 gzip 檔案的一行,並讓它尊重 $/ 變數(或 $INPUT_RECORD_SEPARATOR,或在使用 English 時的 $RS),請參閱 IO::Uncompress::Gunzip

$byteswritten = $gz->gzwrite($buffer) ;

$buffer 的內容寫入壓縮檔案。傳回實際寫入的位元組數,或在發生錯誤時傳回 0。

$status = $gz->gzflush($flush_type) ;

將所有待處理的輸出沖入壓縮檔案。

此方法採用一個可選參數,$flush_type,用於控制沖刷方式。預設使用的 $flush_typeZ_FINISH$flush_type 的其他有效值包括 Z_NO_FLUSHZ_SYNC_FLUSHZ_FULL_FLUSHZ_BLOCK。強烈建議您只有在完全了解其含義時才設定 flush_type 參數,因為過度使用 flush 會嚴重降低壓縮層級。詳情請參閱 zlib 文件。

成功時傳回 0。

$offset = $gz->gztell() ;

傳回未壓縮的檔案偏移量。

$status = $gz->gzseek($offset, $whence) ;

提供 seek 功能的子集,但限制只能在壓縮檔案中向前尋找。嘗試向後尋找會造成致命錯誤。

開啟寫入時,檔案的空白部分會寫入 NULL (0x00) 位元組。

$whence 參數應為 SEEK_SET、SEEK_CUR 或 SEEK_END 之一。

成功時傳回 1,失敗時傳回 0。

$gz->gzclose

關閉壓縮檔案。任何待處理資料都會在檔案關閉前沖刷至檔案。

成功時傳回 0。

$gz->gzsetparams($level, $strategy

變更縮減串流 $gz 的設定。

下列顯示有效選項的清單。未指定的選項將保持不變。

注意:此方法僅在執行 zlib 1.0.6 或更新版本時可用。

$level

定義壓縮層級。有效值為 0 到 9、Z_NO_COMPRESSIONZ_BEST_SPEEDZ_BEST_COMPRESSIONZ_DEFAULT_COMPRESSION

$strategy

定義用於調整壓縮的策略。有效值為 Z_DEFAULT_STRATEGYZ_FILTEREDZ_HUFFMAN_ONLY

$gz->gzerror

傳回與 $gz 關聯的最後一個操作的 zlib 錯誤訊息或數字。在數字脈絡中使用時,傳回值會是 zlib 錯誤數字;在字串脈絡中使用時,傳回值會是 zlib 錯誤訊息。下列顯示的 zlib 錯誤數字常數可供使用。

Z_OK
Z_STREAM_END
Z_ERRNO
Z_STREAM_ERROR
Z_DATA_ERROR
Z_MEM_ERROR
Z_BUF_ERROR
$gzerrno

$gzerrno 標量包含與最近的 gzip 常式關聯的錯誤代碼。請注意,與 gzerror() 不同,錯誤並非與特定檔案關聯。

gzerror() 一樣,它在數字脈絡中傳回錯誤數字,在字串脈絡中傳回錯誤訊息。但與 gzerror() 不同的是,當錯誤與 zlib 本身關聯時,錯誤訊息會對應到 zlib 訊息;當錯誤與 zlib 無關時,錯誤訊息會對應到 UNIX 錯誤訊息(亦即 zlib 傳回 Z_ERRORNO)。

由於 zlib 和 UNIX 使用的錯誤數字有重疊,因此 $gzerrno 僅應在數字脈絡中用於檢查是否有錯誤。請使用 gzerror() 檢查特定的 zlib 錯誤。下列的 gzcat 範例顯示如何安全地使用變數。

範例

以下是一個使用介面的範例腳本。它實作一個 gzcat 函式。

use strict ;
use warnings ;

use Compress::Zlib ;

# use stdin if no files supplied
@ARGV = '-' unless @ARGV ;

foreach my $file (@ARGV) {
    my $buffer ;

    my $gz = gzopen($file, "rb")
         or die "Cannot open $file: $gzerrno\n" ;

    print $buffer while $gz->gzread($buffer) > 0 ;

    die "Error reading from $file: $gzerrno" . ($gzerrno+0) . "\n"
        if $gzerrno != Z_STREAM_END ;

    $gz->gzclose() ;
}

以下是一個使用 gzreadline 的腳本。它實作一個非常簡單的類似 grep 的腳本。

use strict ;
use warnings ;

use Compress::Zlib ;

die "Usage: gzgrep pattern [file...]\n"
    unless @ARGV >= 1;

my $pattern = shift ;

# use stdin if no files supplied
@ARGV = '-' unless @ARGV ;

foreach my $file (@ARGV) {
    my $gz = gzopen($file, "rb")
         or die "Cannot open $file: $gzerrno\n" ;

    while ($gz->gzreadline($_) > 0) {
        print if /$pattern/ ;
    }

    die "Error reading from $file: $gzerrno\n"
        if $gzerrno != Z_STREAM_END ;

    $gz->gzclose() ;
}

這個腳本,gzstream,執行與上述 gzcat 腳本相反的動作。它從標準輸入讀取資料,並將 gzip 資料串流寫入標準輸出。

use strict ;
use warnings ;

use Compress::Zlib ;

binmode STDOUT;  # gzopen only sets it on the fd

my $gz = gzopen(\*STDOUT, "wb")
      or die "Cannot open stdout: $gzerrno\n" ;

while (<>) {
    $gz->gzwrite($_)
      or die "error writing: $gzerrno\n" ;
}

$gz->gzclose ;

Compress::Zlib::memGzip

這個函式用於建立一個具有最小可能 gzip 標頭(剛好 10 個位元組)的記憶體中 gzip 檔案。

$dest = Compress::Zlib::memGzip($buffer)
    or die "Cannot compress: $gzerrno\n";

如果成功,它會傳回記憶體中的 gzip 檔案。否則,它會傳回 undef,而 $gzerrno 變數會儲存 zlib 錯誤碼。

$buffer 參數可以是純量或純量參考。

請參閱 IO::Compress::Gzip,以取得執行記憶體中 gzip 壓縮的另一種方法。

Compress::Zlib::memGunzip

這個函式用於解壓縮記憶體中的 gzip 檔案。

$dest = Compress::Zlib::memGunzip($buffer)
    or die "Cannot uncompress: $gzerrno\n";

如果成功,它會傳回解壓縮的 gzip 檔案。否則,它會傳回 undef,而 $gzerrno 變數會儲存 zlib 錯誤碼。

$buffer 參數可以是純量或純量參考。呼叫此函式後,$buffer 參數的內容會被銷毀。

如果 $buffer 包含多個串接的 gzip 資料串流,則只會解壓縮第一個。如果你需要處理串接的資料串流,請在 IO::Uncompress::Gunzip 模組中使用具有 MultiStream 選項的 gunzip

請參閱 IO::Uncompress::Gunzip,以取得執行記憶體中 gzip 解壓縮的另一種方法。

COMPRESS/UNCOMPRESS

提供兩個函式來執行 RFC 1950 資料串流的記憶體中壓縮/解壓縮。它們稱為 compressuncompress

$dest = compress($source [, $level] ) ;

壓縮 $source。如果成功,它會傳回壓縮後的資料。否則,它會傳回 undef

來源緩衝區 $source 可以是純量或純量參考。

$level 參數定義壓縮層級。有效值為 0 到 9,Z_NO_COMPRESSIONZ_BEST_SPEEDZ_BEST_COMPRESSIONZ_DEFAULT_COMPRESSION。如果未指定 $level,將使用 Z_DEFAULT_COMPRESSION

$dest = uncompress($source) ;

解壓縮 $source。如果成功,它會傳回解壓縮後的資料。否則,它會傳回 undef

來源緩衝區可以是標量或標量參考。

請注意:以上定義的兩個函數相容於同名的 Unix 指令。

請參閱此發行版隨附的 IO::DeflateIO::Inflate,以取得用於讀取/寫入 RFC 1950 檔案/緩衝區的替代介面。

Deflate 介面

此區段定義了一個介面,允許使用 zlib 提供的deflate 介面進行記憶體內壓縮。

以下是可用的介面定義

($d, $status) = deflateInit( [OPT] )

初始化一個 deflate 串流。

它結合了zlib 函數 deflateInitdeflateInit2deflateSetDictionary 的功能。

如果成功,它會在清單內容中傳回已初始化的 deflate 串流 $dZ_OK$status。在標量內容中,它只會傳回 deflate 串流 $d

如果沒有成功,傳回的 deflate 串流 ($d) 將會是未定義,而 $status 會包含確切的zlib 錯誤碼。

此函數可選擇採用多個指定為 -Name=>value 成對的名稱選項。這允許調整個別選項,而無需在參數清單中指定所有選項。

為了向後相容性,也可以將參數傳遞為對包含名稱=>值成對的雜湊的參考。

此函數採用一個可選擇的參數,即對雜湊的參考。雜湊的內容允許調整 deflate 介面。

以下是有效選項清單

-Level

定義壓縮層級。有效值為 0 到 9、Z_NO_COMPRESSIONZ_BEST_SPEEDZ_BEST_COMPRESSIONZ_DEFAULT_COMPRESSION

預設值為 Z_DEFAULT_COMPRESSION。

-Method

定義壓縮方法。目前唯一有效的數值(也是預設值)為 Z_DEFLATED。

-WindowBits

若要建立一個 RFC 1950 資料串流,請將 WindowBits 設定為正數。

若要建立一個 RFC 1951 資料串流,請將 WindowBits 設定為 -MAX_WBITS

有關 WindowBits 的意義和有效數值的完整定義,請參閱deflateInit2zlib 文件。

預設值為 MAX_WBITS。

-MemLevel

有關 MemLevel 的意義和有效值的定義,請參閱 zlib 文件中的 deflateInit2

預設為 MAX_MEM_LEVEL。

-Strategy

定義用於調整壓縮的策略。有效值為 Z_DEFAULT_STRATEGYZ_FILTEREDZ_HUFFMAN_ONLY

預設為 Z_DEFAULT_STRATEGY。

-Dictionary

當指定字典時,Compress::Zlib 會在呼叫 deflateInit 後自動直接呼叫 deflateSetDictionary。字典的 Adler32 值可透過呼叫方法 $d->dict_adler() 取得。

預設為沒有字典。

-Bufsize

設定縮減緩衝區的初始大小。如果必須重新配置緩衝區以增加大小,它會以 Bufsize 的增量成長。

預設為 4096。

以下是使用 deflateInit 選擇性參數清單來覆寫預設緩衝區大小和縮減層級的範例。所有其他選項都採用預設值。

deflateInit( -Bufsize => 300,
             -Level => Z_BEST_SPEED  ) ;

($out, $status) = $d->deflate($buffer)

縮減 $buffer 的內容。緩衝區可以是純量或純量參照。完成後,$buffer 會完全處理完畢(假設沒有錯誤)。如果縮減成功,它會傳回縮減的輸出 $out 和狀態值 $statusZ_OK

發生錯誤時,$out 會是 undef,而 $status 會包含 zlib 錯誤碼。

在純量內容中,deflate 只會傳回 $out

zlib 中的 deflate 函數一樣,此方法不一定會產生任何輸出。因此,不要依賴 $out 為空來進行錯誤測試。

($out, $status) = $d->flush() =head2 ($out, $status) = $d->flush($flush_type)

通常用於完成縮減。任何待處理的輸出都會透過 $out 傳回。如果成功,$status 會有 Z_OK 的值。

在純量內容中,flush 只會傳回 $out

請注意,清除可能會嚴重降低縮減率,因此只應使用它來終止解壓縮(使用 Z_FINISH)或當您想要建立完全清除點(使用 Z_FULL_FLUSH)時。

預設使用的 flush_typeZ_FINISHflush_type 的其他有效值為 Z_NO_FLUSHZ_PARTIAL_FLUSHZ_SYNC_FLUSHZ_FULL_FLUSH。強烈建議您只有在完全了解其含義時才設定 flush_type 參數。請參閱 zlib 文件以取得詳細資訊。

$status = $d->deflateParams([OPT])

變更 deflate 串流 $d 的設定。

下列顯示有效選項的清單。未指定的選項將保持不變。

-Level

定義壓縮層級。有效值為 0 到 9、Z_NO_COMPRESSIONZ_BEST_SPEEDZ_BEST_COMPRESSIONZ_DEFAULT_COMPRESSION

-Strategy

定義用於調整壓縮的策略。有效值為 Z_DEFAULT_STRATEGYZ_FILTEREDZ_HUFFMAN_ONLY

$d->dict_adler()

傳回字典的 adler32 值。

$d->msg()

傳回 zlib 產生的最後一個錯誤訊息。

$d->total_in()

傳回傳入 deflate 的未壓縮位元組總數。

$d->total_out()

傳回 deflate 輸出的壓縮位元組總數。

範例

以下是使用 deflate 的簡單範例。它只讀取標準輸入,將其壓縮並寫入標準輸出。

use strict ;
use warnings ;

use Compress::Zlib ;

binmode STDIN;
binmode STDOUT;
my $x = deflateInit()
   or die "Cannot create a deflation stream\n" ;

my ($output, $status) ;
while (<>)
{
    ($output, $status) = $x->deflate($_) ;

    $status == Z_OK
        or die "deflation failed\n" ;

    print $output ;
}

($output, $status) = $x->flush() ;

$status == Z_OK
    or die "deflation failed\n" ;

print $output ;

Inflate 介面

此區段定義可用的介面,允許使用 zlib 提供的 deflate 介面進行記憶體中解壓縮。

以下是介面的定義

($i, $status) = inflateInit()

初始化一個膨脹串流。

在清單內容中,它會傳回膨脹串流 $i$status 中的 zlib 狀態碼。在純量內容中,它只會傳回膨脹串流。

如果成功,$i 將會包含膨脹串流,而 $status 將會是 Z_OK

如果失敗,$i 將會是 undef,而 $status 將會包含 zlib 錯誤碼。

此函數可選擇採用多個指定為 -Name=>value 成對的名稱選項。這允許調整個別選項,而無需在參數清單中指定所有選項。

為了向後相容性,也可以將參數傳遞為對包含名稱=>值成對的雜湊的參考。

此函數採用一個可選擇的參數,即對雜湊的參考。雜湊的內容允許調整 deflate 介面。

以下是有效選項清單

-WindowBits

若要解壓縮 RFC 1950 資料串流,請將 WindowBits 設為正數。

若要解壓縮 RFC 1951 資料串流,請將 WindowBits 設為 -MAX_WBITS

關於 WindowBits 的意義和有效值的完整定義,請參閱 zlib 文件中的 inflateInit2

預設值為 MAX_WBITS。

-Bufsize

設定膨脹緩衝區的初始大小。如果必須重新配置緩衝區以增加大小,它將以 Bufsize 的增量成長。

預設值為 4096。

- 字典

預設為沒有字典。

以下為使用 inflateInit 可選參數來覆寫預設緩衝區大小的範例。

inflateInit( -Bufsize => 300 ) ;

($out, $status) = $i->inflate($buffer)

膨脹 $buffer 的完整內容。緩衝區可以是標量或標量參考。

如果成功,則傳回 Z_OK,如果已成功到達壓縮資料的結尾,則傳回 Z_STREAM_END。如果未成功,則 $out 會是 未定義,而 $status 會包含 zlib 錯誤碼。

inflate 會修改 $buffer 參數。完成時,它將包含膨脹後輸入緩衝區的剩餘部分。這表示當傳回狀態為 Z_OK 時,$buffer 會是空字串。當傳回狀態為 Z_STREAM_END 時,$buffer 參數會包含在壓縮資料串流後儲存在輸入緩衝區中的內容(如果有)。

在處理封裝壓縮資料串流的檔案格式(例如 gzip、zip)時,此功能非常有用。

$status = $i->inflateSync($buffer)

掃描 $buffer,直到到達 完整清除點 或緩衝區的結尾。

如果找到 完整清除點,則傳回 Z_OK,而 $buffer 會移除清除點之前的所有資料。然後可以將其傳遞給 deflate 方法。

任何其他傳回碼表示未找到清除點。如果還有更多資料,則可以重複呼叫 inflateSync,並提供更多壓縮資料,直到找到清除點。

$i->dict_adler()

傳回字典的 adler32 值。

$i->msg()

傳回 zlib 產生的最後一個錯誤訊息。

$i->total_in()

傳回輸入膨脹的壓縮位元組總數。

$i->total_out()

傳回膨脹輸出的未壓縮位元組總數。

範例

以下為使用 inflate 的範例。

use strict ;
use warnings ;

use Compress::Zlib ;

my $x = inflateInit()
   or die "Cannot create a inflation stream\n" ;

my $input = '' ;
binmode STDIN;
binmode STDOUT;

my ($output, $status) ;
while (read(STDIN, $input, 4096))
{
    ($output, $status) = $x->inflate(\$input) ;

    print $output
        if $status == Z_OK or $status == Z_STREAM_END ;

    last if $status != Z_OK ;
}

die "inflation failed\n"
    unless $status == Z_STREAM_END ;

檢查總和函數

zlib 提供兩個函數來計算檢查總和。對於 Perl 介面,兩個函數中兩個參數的順序已反轉。這允許執行執行中的檢查總和和一次性計算。

$crc = adler32($buffer [,$crc]) ;
$crc = crc32($buffer [,$crc]) ;

緩衝區參數可以是標量或標量參考。

如果 $crc 參數是 undef,crc 值將會重設。

如果您已經使用 zlib 1.2.3 或更好的版本建置這個模組,將會有兩個額外的 CRC 相關函數可用。

$crc = crc32_combine($crc1, $crc2, $len2);
$adler = adler32_combine($adler1, $adler2, $len2);

這些函數允許合併檢查碼。請參閱 zlib 文件以取得更多詳細資訊。

雜項

my $version = Compress::Zlib::zlib_version();

傳回 zlib 函式庫的版本。

常數

當您使用 Compress::Zlib 時,所有 zlib 常數會自動導入。

支援

一般回饋/問題/錯誤報告應傳送至 https://github.com/pmqs/IO-Compress/issues(優先)或 https://rt.cpan.org/Public/Dist/Display.html?Name=IO-Compress

另請參閱

IO::Compress::GzipIO::Uncompress::GunzipIO::Compress::DeflateIO::Uncompress::InflateIO::Compress::RawDeflateIO::Uncompress::RawInflateIO::Compress::Bzip2IO::Uncompress::Bunzip2IO::Compress::LzmaIO::Uncompress::UnLzmaIO::Compress::XzIO::Uncompress::UnXzIO::Compress::LzipIO::Uncompress::UnLzipIO::Compress::LzopIO::Uncompress::UnLzopIO::Compress::LzfIO::Uncompress::UnLzfIO::Compress::ZstdIO::Uncompress::UnZstdIO::Uncompress::AnyInflateIO::Uncompress::AnyUncompress

IO::Compress::FAQ

File::GlobMapperArchive::ZipArchive::TarIO::Zlib

有關 RFC 1950、1951 和 1952,請參閱 https://datatracker.ietf.org/doc/html/rfc1950https://datatracker.ietf.org/doc/html/rfc1951https://datatracker.ietf.org/doc/html/rfc1952

zlib 壓縮函式庫是由 Jean-loup Gailly gzip@prep.ai.mit.edu 和 Mark Adler madler@alumni.caltech.edu 編寫的。

zlib 壓縮函式庫的主要網站是 http://www.zlib.org

zlib-ng 壓縮函式庫的主要網站是 https://github.com/zlib-ng/zlib-ng

gzip 的主要網站是 http://www.gzip.org

作者

此模組由 Paul Marquess 編寫,pmqs@cpan.org

修改記錄

請參閱 Changes 檔案。

版權和授權

版權所有 (c) 1995-2023 Paul Marquess。保留所有權利。

此程式為自由軟體;您可以在與 Perl 相同的條款下重新散布或修改它。