內容

名稱

IO::Compress::Gzip - 編寫 RFC 1952 檔案/緩衝區

語法

use IO::Compress::Gzip qw(gzip $GzipError) ;

my $status = gzip $input => $output [,OPTS]
    or die "gzip failed: $GzipError\n";

my $z = IO::Compress::Gzip->new( $output [,OPTS] )
    or die "gzip failed: $GzipError\n";

$z->print($string);
$z->printf($format, $string);
$z->write($string);
$z->syswrite($string [, $length, $offset]);
$z->flush();
$z->tell();
$z->eof();
$z->seek($position, $whence);
$z->binmode();
$z->fileno();
$z->opened();
$z->autoflush();
$z->input_line_number();
$z->newStream( [OPTS] );

$z->deflateParams();

$z->close() ;

$GzipError ;

# IO::File mode

print $z $string;
printf $z $format, $string;
tell $z
eof $z
seek $z, $position, $whence
binmode $z
fileno $z
close $z ;

說明

此模組提供 Perl 介面,用於將壓縮資料寫入檔案或緩衝區,如 RFC 1952 中所定義。

使用此模組可以建立 RFC 1952 中定義的所有 gzip 標頭。

如要讀取 RFC 1952 檔案/緩衝區,請參閱配套模組 IO::Uncompress::Gunzip

函式介面

提供頂層函式 gzip,用於在緩衝區和/或檔案之間執行「一次性」壓縮。如要更精細地控制壓縮程序,請參閱 「OO 介面」 區段。

use IO::Compress::Gzip qw(gzip $GzipError) ;

gzip $input_filename_or_reference => $output_filename_or_reference [,OPTS]
    or die "gzip failed: $GzipError\n";

此功能介面需要 Perl5.005 或更新版本。

gzip $input_filename_or_reference => $output_filename_or_reference [, OPTS]

gzip 至少需要兩個參數,$input_filename_or_reference$output_filename_or_reference,以及零個或多個選用參數 (請參閱 "選用參數")

$input_filename_or_reference 參數

參數 $input_filename_or_reference 用於定義未壓縮資料的來源。

它可以採用下列其中一種形式

檔案名稱

如果 $input_filename_or_reference 參數是單純的純量,則假設它是一個檔案名稱。此檔案將會開啟以供讀取,且輸入資料將從中讀取。

檔案控制代碼

如果 $input_filename_or_reference 參數是檔案控制代碼,則輸入資料將從中讀取。字串 '-' 可用作標準輸入的別名。

純量參考

如果 $input_filename_or_reference 是純量參考,則輸入資料將從 $$input_filename_or_reference 讀取。

陣列參考

如果 $input_filename_or_reference 是陣列參考,則陣列中的每個元素都必須是檔案名稱。

輸入資料將依序從每個檔案讀取。

將會遍歷整個陣列以確保它只包含有效的檔案名稱,然後才會壓縮任何資料。

輸入 FileGlob 字串

如果 $input_filename_or_reference 是由字元 "<" 和 ">" 分隔的字串,gzip 會假設它是一個輸入 FileGlob 字串。輸入是與 FileGlob 相符的檔案清單。

請參閱 File::GlobMapper 以取得更多詳細資料。

如果 $input_filename_or_reference 參數是任何其他類型,則會傳回 undef

此外,如果 $input_filename_or_reference 是單純的檔案名稱,則 NameTime 選項的預設值將從該檔案取得。

如果您不想使用這些預設值,可以透過明確設定 NameTime 選項,或設定 Minimal 參數來覆寫它們。

$output_filename_or_reference 參數

參數 $output_filename_or_reference 用於控制壓縮資料的目的地。此參數可以採用下列其中一種形式。

檔案名稱

如果 $output_filename_or_reference 參數是簡單的純量,則假設它是一個檔案名稱。此檔案將會開啟寫入,而壓縮資料將寫入其中。

檔案控制代碼

如果 $output_filename_or_reference 參數是檔案控制代碼,則壓縮資料將寫入其中。字串「-」可以用作標準輸出的別名。

純量參照

如果 $output_filename_or_reference 是純量參照,則壓縮資料將儲存在 $$output_filename_or_reference 中。

陣列參照

如果 $output_filename_or_reference 是陣列參照,則壓縮資料將推入陣列中。

輸出檔案 Glob

如果 $output_filename_or_reference 是以字元「<」和「>」為分隔符的字串,gzip 將假設它是一個輸出檔案 Glob 字串。輸出是與檔案 Glob 相符的檔案清單。

$output_filename_or_reference 是檔案 Glob 字串時,$input_filename_or_reference 也必須是檔案 Glob 字串。其他任何情況都是錯誤。

請參閱 File::GlobMapper 以取得更多詳細資料。

如果 $output_filename_or_reference 參數是任何其他類型,則會傳回 undef

備註

$input_filename_or_reference 對應到多個檔案/緩衝區,而 $output_filename_or_reference 是單一檔案/緩衝區時,輸入檔案/緩衝區將儲存在 $output_filename_or_reference 中,作為壓縮資料串流的串接系列。

選用參數

一次性函式 gzip 的選用參數(在大部分情況下)與在 「建構函式選項」區段中定義的 OO 介面中使用的參數相同。例外情況如下列出:

AutoClose => 0|1

此選項適用於任何輸入或輸出資料串流到 gzip 的檔案控制代碼。

如果指定了 AutoClose,並且值為 true,則在 gzip 完成後,所有輸入和/或輸出檔案句柄都會關閉。

此參數預設為 0。

BinModeIn => 0|1

此選項現在為 no-op。所有檔案都將以二進位模式讀取。

Append => 0|1

此選項的行為取決於輸出資料串流的類型。

  • 緩衝區

    如果啟用 Append,所有壓縮資料都將附加到輸出緩衝區的結尾。否則,在將任何壓縮資料寫入輸出緩衝區之前,將清除輸出緩衝區。

  • 檔案名稱

    如果啟用 Append,檔案將以附加模式開啟。否則,在將任何壓縮資料寫入檔案之前,將會先清除檔案的內容(如果有)。

  • 檔案句柄

    如果啟用 Append,在將任何壓縮資料寫入檔案句柄之前,將透過呼叫 seek 將檔案句柄定位到檔案結尾。否則,檔案指標將不會移動。

當指定 Append 並將其設定為 true 時,它會將所有壓縮資料附加到輸出資料串流。

因此,當輸出為檔案句柄時,它會在寫入任何壓縮資料之前執行 seek 到 eof。如果輸出為檔案名稱,它將開啟以附加。如果輸出為緩衝區,所有壓縮資料都將附加到現有緩衝區。

相反,當未指定 Append,或它存在且設定為 false 時,它將執行下列操作。

當輸出為檔案名稱時,它會在寫入任何壓縮資料之前清除檔案的內容。如果輸出為檔案句柄,其位置將不會改變。如果輸出為緩衝區,它將在輸出任何壓縮資料之前被清除。

預設為 0。

範例

以下是幾個顯示模組功能的範例。

串流

這個非常簡單的命令列範例展示了模組的串流功能。程式碼從 STDIN 讀取資料,壓縮它,並將壓縮資料寫入 STDOUT。

$ echo hello world | perl -MIO::Compress::Gzip=gzip -e 'gzip \*STDIN => \*STDOUT' >output.gz

特殊檔案名稱「-」可以用作 \*STDIN\*STDOUT 的替身,因此上述範例可以改寫為

$ echo hello world | perl -MIO::Compress::Gzip=gzip -e 'gzip "-" => "-"' >output.gz

從檔案系統壓縮檔案

要讀取檔案 file1.txt 的內容,並將壓縮資料寫入檔案 file1.txt.gz

use strict ;
use warnings ;
use IO::Compress::Gzip qw(gzip $GzipError) ;

my $input = "file1.txt";
gzip $input => "$input.gz"
    or die "gzip failed: $GzipError\n";

從檔案處理常式讀取並寫入記憶體緩衝區

從現有的 Perl 檔案處理常式 $input 讀取並將壓縮資料寫入緩衝區 $buffer

use strict ;
use warnings ;
use IO::Compress::Gzip qw(gzip $GzipError) ;
use IO::File ;

my $input = IO::File->new( "<file1.txt" )
    or die "Cannot open 'file1.txt': $!\n" ;
my $buffer ;
gzip $input => \$buffer
    or die "gzip failed: $GzipError\n";

壓縮多個檔案

壓縮目錄「/my/home」中所有符合「*.txt」的檔案,並將壓縮資料儲存在同一個目錄中

use strict ;
use warnings ;
use IO::Compress::Gzip qw(gzip $GzipError) ;

gzip '</my/home/*.txt>' => '<*.gz>'
    or die "gzip failed: $GzipError\n";

如果你想要一次壓縮一個檔案,可以使用這個方法

use strict ;
use warnings ;
use IO::Compress::Gzip qw(gzip $GzipError) ;

for my $input ( glob "/my/home/*.txt" )
{
    my $output = "$input.gz" ;
    gzip $input => $output
        or die "Error compressing '$input': $GzipError\n";
}

OO 介面

建構函式

IO::Compress::Gzip 建構函式的格式如下所示

my $z = IO::Compress::Gzip->new( $output [,OPTS] )
    or die "IO::Compress::Gzip failed: $GzipError\n";

如果成功,它會傳回一個 IO::Compress::Gzip 物件,如果失敗,則傳回未定義。變數 $GzipError 會在失敗時包含錯誤訊息。

如果你執行 Perl 5.005 或更新版本,從 IO::Compress::Gzip 傳回的物件 $z 可以像 IO::File 檔案處理常式一樣使用。這表示所有正常的輸出檔案操作都可以使用 $z 執行。例如,要寫入壓縮檔案/緩衝區,你可以使用下列任一種格式

$z->print("hello world\n");
print $z "hello world\n";

強制參數 $output 用於控制壓縮資料的目的地。這個參數可以採用下列其中一種格式。

檔案名稱

如果 $output 參數是一個簡單的純量,則假設它是一個檔案名稱。這個檔案將會開啟以供寫入,而壓縮資料將會寫入其中。

檔案處理常式

如果 $output 參數是一個檔案處理常式,則壓縮資料將會寫入其中。字串「-」可以用作標準輸出的別名。

純量參考

如果 $output 是純量參考,則壓縮資料將會儲存在 $$output 中。

如果 $output 參數是任何其他類型,則 IO::Compress::Gzip::new 會傳回未定義。

建構函式選項

OPTS 是下列選項的零個或多個組合

自動關閉 => 0|1

這個選項僅在 $output 參數是檔案處理常式時才有效。如果指定,且值為 true,則會導致在呼叫 close 方法或銷毀 IO::Compress::Gzip 物件後關閉 $output

此參數預設為 0。

Append => 0|1

以附加模式開啟 $output

此選項的行為取決於 $output 的類型。

  • 緩衝區

    如果 $output 是緩衝區,且啟用 Append,所有壓縮資料將附加到 $output 的結尾。否則,在寫入任何資料之前,將清除 $output

  • 檔案名稱

    如果 $output 是檔案名稱,且啟用 Append,將以附加模式開啟檔案。否則,在寫入任何壓縮資料之前,將先清除檔案的內容(如果有)。

  • 檔案句柄

    如果 $output 是檔案控制代碼,在寫入任何壓縮資料之前,將透過呼叫 seek 將檔案指標定位到檔案結尾。否則,檔案指標將不會移動。

此參數預設為 0。

Merge => 0|1

此選項用於壓縮輸入資料,並將其附加到 $output 中現有的壓縮資料串流。最終結果是儲存在 $output 中的單一壓縮資料串流。

$output 不是 RFC 1952 資料串流時,嘗試使用此選項會產生致命錯誤。

Merge 選項還有許多其他限制

  1. 此模組需要使用 zlib 1.2.1 或更新版本才能運作。如果在較舊版本的 zlib 中使用 Merge,將會擲出致命錯誤。

  2. 如果 $output 是檔案或檔案控制代碼,則必須是可以尋址的。

此參數預設為 0。

-Level

定義 zlib 使用的壓縮等級。值應為 0 到 9 之間的數字(0 表示不壓縮,9 表示最大壓縮),或下面定義的其中一個符號常數。

Z_NO_COMPRESSION
Z_BEST_SPEED
Z_BEST_COMPRESSION
Z_DEFAULT_COMPRESSION

預設值為 Z_DEFAULT_COMPRESSION。

請注意,這些常數預設不會由 IO::Compress::Gzip 匯入。

use IO::Compress::Gzip qw(:strategy);
use IO::Compress::Gzip qw(:constants);
use IO::Compress::Gzip qw(:all);
-Strategy

定義用於調整壓縮的策略。請使用下面定義的其中一個符號常數。

Z_FILTERED
Z_HUFFMAN_ONLY
Z_RLE
Z_FIXED
Z_DEFAULT_STRATEGY

預設值為 Z_DEFAULT_STRATEGY。

Minimal => 0|1

如果指定此選項,將強制建立 RFC 1952 中定義的最小可能相容 gzip 標頭(長度正好為 10 位元組)。

請參閱 RFC 1952 中標題為「相容性」的章節,以取得 gzip 標頭中欄位所使用值的定義。

如果此參數設為 1,則控制 gzip 標頭內容的所有其他參數都將被忽略。

此參數預設為 0。

Comment => $comment

$comment 的內容儲存在 gzip 標頭中的 COMMENT 欄位中。預設情況下,不會將任何註解欄位寫入 gzip 檔案中。

如果啟用 -Strict 選項,則註解只能包含 ISO 8859-1 字元加上換行符號。

如果停用 -Strict 選項,則註解欄位可以包含任何字元,但 NULL 除外。如果存在任何 NULL 字元,則欄位將在第一個 NULL 處被截斷。

Name => $string

$string 的內容儲存在 gzip NAME 標頭欄位中。如果未指定 Name,則不會建立任何 gzip NAME 欄位。

如果啟用 -Strict 選項,則 $string 只能包含 ISO 8859-1 字元。

如果停用 -Strict,則 $string 可以包含任何字元,但 NULL 除外。如果存在任何 NULL 字元,則欄位將在第一個 NULL 處被截斷。

Time => $number

將 gzip 標頭中的 MTIME 欄位設為 $number。

如果未指定此選項,則此欄位預設為建立 IO::Compress::Gzip 物件的時間。

TextFlag => 0|1

此參數控制 gzip 標頭中 FLG.FTEXT 位元的設定。它用於表示儲存在 gzip 檔案/緩衝區中的資料可能是文字。

預設值為 0。

HeaderCRC => 0|1

當此參數為 true 時,它會將 gzip 標頭中的 FLG.FHCRC 位元設為 1,並將 CRC16 標頭欄位設為完整 gzip 標頭的 CRC,但 CRC16 欄位本身除外。

請注意,使用將 HeaderCRC 旗標設為 1 建立的 gzip 檔案無法被大多數(如果不是全部)標準 gunzip 工具讀取,最顯著的例子是 gzip 版本 1.2.4。因此,如果您想要最大化 gzip 檔案的可攜性,應避免使用此選項。

此參數預設為 0。

OS_Code => $value

$value 儲存在 gzip OS 標頭欄位中。0 到 255 之間的數字皆為有效值。

如果未指定,此參數預設為建置此模組時作業系統的 OS 代碼。值 3 用於所有 Unix 變體和未知作業系統的萬用值。

ExtraField => $data

此參數允許在 gzip 標頭的 ExtraField 中儲存額外的元資料。符合 RFC 1952 的 ExtraField 包含零個或多個子欄位。每個子欄位包含一個兩位元組標頭,後接子欄位資料。

子欄位清單可以用下列任何格式提供

-ExtraField => [$id1, $data1,
                $id2, $data2,
                 ...
               ]
-ExtraField => [ [$id1 => $data1],
                 [$id2 => $data2],
                 ...
               ]
-ExtraField => { $id1 => $data1,
                 $id2 => $data2,
                 ...
               }

其中 $id1$id2 是兩個位元組的子欄位 ID。ID 的第二個位元組不能為 0,除非已停用 Strict 選項。

如果您使用雜湊語法,您無法控制 ExtraSubFields 的儲存順序,而且您無法擁有具有重複 ID 的 SubFields。

或者,子欄位清單可以作為純量提供,如下所示

-ExtraField => $rawdata

如果您使用原始格式,且 Strict 選項已啟用,IO::Compress::Gzip 將檢查 $rawdata 是否包含零個或多個符合的子欄位。當 Strict 已停用時,$rawdata 可以包含任何任意位元組串流。

Extra Field 的最大大小為 65535 位元組。

ExtraFlags => $value

將 gzip 標頭中的 XFL 位元組設定為 $value

如果沒有此選項,儲存在 XFL 欄位中的值將由 Level 選項的設定決定。

如果已指定 Level => Z_BEST_SPEED,則 XFL 設定為 2。如果已指定 Level => Z_BEST_COMPRESSION,則 XFL 設定為 4。否則,XFL 設定為 0。

Strict => 0|1

Strict 選擇性地監控與其他選項一起提供的數值,以確保它們符合 RFC1952。

此選項預設為啟用。

如果啟用 Strict,將監控下列行為

  • 提供給 Name 選項的值只能包含 ISO 8859-1 字元。

  • 提供給 Comment 選項的值只能包含 ISO 8859-1 字元加上換行符號。

  • 提供給 -Name-Comment 選項的值不能包含多個嵌入式空值。

  • 如果指定了 ExtraField 選項,且它是一個簡單的純量,它必須符合 RFC 1952 中定義的子欄位結構。

  • 如果指定了 ExtraField 選項,將檢查每個子欄位的 ID 第二個位元組,以確保它不包含保留值 0x00。

Strict 被停用時,將會監控下列行為

  • 使用 -Name 選項提供的數值可以包含任何字元,除了 NULL。

  • 使用 -Comment 選項提供的數值可以包含任何字元,除了 NULL。

  • 使用 -Name-Comment 選項提供的數值可以包含多個內嵌 NULL。寫入 gzip 標頭的字串將包含字元,直到但不包含第一個內嵌 NULL。

  • 如果指定了 ExtraField 選項,而且它是一個簡單的純量,則不會檢查結構。唯一的錯誤是長度太長。

  • ExtraField 子欄位的 ID 標頭可以包含任何兩個位元組。

範例

待辦事項

方法

列印

用法為

$z->print($data)
print $z $data

壓縮並輸出 $data 參數的內容。這與內建的 print 行為相同。

如果成功,傳回 true。

printf

用法為

$z->printf($format, $data)
printf $z $format, $data

壓縮並輸出 $data 參數的內容。

如果成功,傳回 true。

syswrite

用法為

$z->syswrite $data
$z->syswrite $data, $length
$z->syswrite $data, $length, $offset

壓縮並輸出 $data 參數的內容。

傳回未壓縮的已寫入位元組數,或在不成功時傳回 undef

寫入

用法為

$z->write $data
$z->write $data, $length
$z->write $data, $length, $offset

壓縮並輸出 $data 參數的內容。

傳回未壓縮的已寫入位元組數,或在不成功時傳回 undef

快取

用法為

$z->flush;
$z->flush($flush_type);

將任何待處理的壓縮資料快取到輸出檔案/緩衝區。

此方法採用一個選用參數 $flush_type,用於控制快取的執行方式。預設使用的 $flush_typeZ_FINISH$flush_type 的其他有效值為 Z_NO_FLUSHZ_SYNC_FLUSHZ_FULL_FLUSHZ_BLOCK。強烈建議您只有在完全了解其影響時才設定 flush_type 參數,過度使用 flush 會嚴重降低達成的壓縮等級。有關詳細資訊,請參閱 zlib 文件。

成功時傳回 true。

tell

用法為

$z->tell()
tell $z

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

eof

用法為

$z->eof();
eof($z);

如果已呼叫 close 方法,傳回 true。

seek

$z->seek($position, $whence);
seek($z, $position, $whence);

提供 seek 功能的子集,限制為只能在輸出檔案/緩衝區中向前尋求。嘗試向後尋求會造成致命錯誤。

檔案/緩衝區的空白部分將寫入 NULL (0x00) 位元組。

$whence 參數採用一個通常的值,即 SEEK_SET、SEEK_CUR 或 SEEK_END。

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

binmode

用法為

$z->binmode
binmode $z ;

這是為完整性而提供的無動作。

opened

$z->opened()

如果物件目前參照開啟的檔案/緩衝區,則傳回 true。

autoflush

my $prev = $z->autoflush()
my $prev = $z->autoflush(EXPR)

如果 $z 物件與檔案或檔案處理相關聯,則此方法會傳回底層檔案處理的目前自動更新設定。如果 EXPR 存在且非零,則它會在每次寫入/列印操作後啟用更新。

如果 $z 與緩衝區相關聯,則此方法沒有作用,且總是傳回 undef

請注意,特殊變數 $| 無法用於設定或擷取自動更新設定。

input_line_number

$z->input_line_number()
$z->input_line_number(EXPR)

壓縮時,此方法總是傳回 undef

fileno

$z->fileno()
fileno($z)

如果 $z 物件與檔案或檔案處理相關聯,則 fileno 會傳回底層檔案描述符。一旦呼叫 close 方法,fileno 會傳回 undef

如果 $z 物件與緩衝區相關聯,則此方法會傳回 undef

close

$z->close() ;
close $z ;

更新任何待處理的壓縮資料,然後關閉輸出檔案/緩衝區。

對於大多數版本的 Perl,如果 IO::Compress::Gzip 物件已毀損(明確或透過變數,其中對物件的參照超出範圍),則此方法會自動呼叫。例外情況為 Perl 版本 5.005 至 5.00504 和 5.8.0。在這些情況下,close 方法會自動呼叫,但直到程式終止時所有現存物件的全球毀損為止。

因此,如果您希望您的指令碼能夠在所有版本的 Perl 上執行,您應該明確呼叫 close,而不要依賴自動關閉。

成功則傳回 true,否則傳回 0。

如果在建立 IO::Compress::Gzip 物件時已啟用 AutoClose 選項,且物件與檔案相關聯,則底層檔案也會關閉。

newStream([OPTS])

用法為

$z->newStream( [OPTS] )

關閉目前的壓縮資料串流,並開始新的串流。

OPTS 包含建立 $z 物件時可用的任何選項。

有關更多詳細資料,請參閱 「建構函式選項」 區段。

deflateParams

用法為

$z->deflateParams

待辦事項

匯入

IO::Compress::Gzip 中的某些方法需要多個符號常數。預設情況下不會匯入任何常數。

:all

匯入 gzip$GzipError 以及 IO::Compress::Gzip 可使用的所有符號常數。與執行下列動作相同

use IO::Compress::Gzip qw(gzip $GzipError :constants) ;
:constants

匯入所有符號常數。與執行下列動作相同

use IO::Compress::Gzip qw(:flush :level :strategy) ;
:flush

flush 方法會使用這些符號常數。

Z_NO_FLUSH
Z_PARTIAL_FLUSH
Z_SYNC_FLUSH
Z_FULL_FLUSH
Z_FINISH
Z_BLOCK
:level

建構函式中的 Level 選項會使用這些符號常數。

Z_NO_COMPRESSION
Z_BEST_SPEED
Z_BEST_COMPRESSION
Z_DEFAULT_COMPRESSION
:strategy

建構函式中的 Strategy 選項會使用這些符號常數。

Z_FILTERED
Z_HUFFMAN_ONLY
Z_RLE
Z_FIXED
Z_DEFAULT_STRATEGY

範例

Apache::GZip 重新檢視

請參閱 IO::Compress::FAQ

與 Net::FTP 搭配使用

請參閱 IO::Compress::FAQ

支援

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

另請參閱

Compress::ZlibIO::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) 2005-2023 Paul Marquess。保留所有權利。

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