# perldoc > Compress::Zlib

---
type: CommandReference
command: Compress::Zlib
mode: perldoc
section: 
source: perldoc
---

## Quick Reference

- `gzopen($filename, $mode)` — open gzip file for read/write
- `$gz->gzread($buffer [,$size])` — read compressed data
- `$gz->gzwrite($buffer)` — write compressed data
- `$gz->gzclose()` — close gzip file
- `$dest = compress($source [, $level])` — in-memory RFC 1950 compression
- `$dest = uncompress($source)` — in-memory RFC 1950 decompression
- `($d, $status) = deflateInit([OPT])` — initialise deflation stream
- `($i, $status) = inflateInit([OPT])` — initialise inflation stream

## Name

Interface to zlib compression library

## Synopsis

perl
use Compress::Zlib;

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

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

$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();
## Options

### Gzip Interface (`gzopen` mode string)

- `$mode` — combination of read/write flag (`rb`, `wb`, `ab`), optional compression level (0–9), and strategy suffix (`f` for filtered, `h` for Huffman, `R` for run-length encoding). Default level: `Z_DEFAULT_COMPRESSION`, default strategy: `Z_DEFAULT_STRATEGY`.

### Deflate Options (`deflateInit`)

- `-Level` — compression level: 0–9, `Z_NO_COMPRESSION`, `Z_BEST_SPEED`, `Z_BEST_COMPRESSION`, `Z_DEFAULT_COMPRESSION`. Default: `Z_DEFAULT_COMPRESSION`.
- `-Method` — compression method. Only valid value: `Z_DEFLATED` (default).
- `-WindowBits` — window size. Positive for RFC 1950, `-MAX_WBITS` for RFC 1951. Default: `MAX_WBITS`.
- `-MemLevel` — memory usage. Default: `MAX_MEM_LEVEL`.
- `-Strategy` — compression strategy: `Z_DEFAULT_STRATEGY`, `Z_FILTERED`, `Z_HUFFMAN_ONLY`. Default: `Z_DEFAULT_STRATEGY`.
- `-Dictionary` — initial dictionary. Default: none.
- `-Bufsize` — initial buffer size (grows in increments). Default: 4096.

### Inflate Options (`inflateInit`)

- `-WindowBits` — window size. Positive for RFC 1950, `-MAX_WBITS` for RFC 1951. Default: `MAX_WBITS`.
- `-Bufsize` — initial buffer size. Default: 4096.
- `-Dictionary` — initial dictionary. Default: none.

### `deflateParams` Options

- `-Level` — compression level (same values as above).
- `-Strategy` — compression strategy.

### `gzsetparams` Options

- `$level` — 0–9 or `Z_NO_COMPRESSION`, `Z_BEST_SPEED`, `Z_BEST_COMPRESSION`, `Z_DEFAULT_COMPRESSION`.
- `$strategy` — `Z_DEFAULT_STRATEGY`, `Z_FILTERED`, `Z_HUFFMAN_ONLY`.

## Examples

### gzcat — read gzip files

perl
use strict;
use warnings;
use Compress::Zlib;

@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();
}
### In-memory deflate (compress stdin to stdout)

perl
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;
## See Also

- [IO::Compress::Gzip](http://localhost/phpMan.php/perldoc/IO%3A%3ACompress%3A%3AGzip/markdown)
- [IO::Uncompress::Gunzip](http://localhost/phpMan.php/perldoc/IO%3A%3AUncompress%3A%3AGunzip/markdown)
- [IO::Compress::Deflate](http://localhost/phpMan.php/perldoc/IO%3A%3ACompress%3A%3ADeflate/markdown)
- [IO::Uncompress::Inflate](http://localhost/phpMan.php/perldoc/IO%3A%3AUncompress%3A%3AInflate/markdown)
- [IO::Compress::RawDeflate](http://localhost/phpMan.php/perldoc/IO%3A%3ACompress%3A%3ARawDeflate/markdown)
- [IO::Uncompress::RawInflate](http://localhost/phpMan.php/perldoc/IO%3A%3AUncompress%3A%3ARawInflate/markdown)
- [IO::Compress::Bzip2](http://localhost/phpMan.php/perldoc/IO%3A%3ACompress%3A%3ABzip2/markdown)
- [IO::Uncompress::Bunzip2](http://localhost/phpMan.php/perldoc/IO%3A%3AUncompress%3A%3ABunzip2/markdown)
- [IO::Compress::Lzma](http://localhost/phpMan.php/perldoc/IO%3A%3ACompress%3A%3ALzma/markdown)
- [IO::Uncompress::UnLzma](http://localhost/phpMan.php/perldoc/IO%3A%3AUncompress%3A%3AUnLzma/markdown)
- [IO::Compress::Xz](http://localhost/phpMan.php/perldoc/IO%3A%3ACompress%3A%3AXz/markdown)
- [IO::Uncompress::UnXz](http://localhost/phpMan.php/perldoc/IO%3A%3AUncompress%3A%3AUnXz/markdown)
- [IO::Compress::Lzip](http://localhost/phpMan.php/perldoc/IO%3A%3ACompress%3A%3ALzip/markdown)
- [IO::Uncompress::UnLzip](http://localhost/phpMan.php/perldoc/IO%3A%3AUncompress%3A%3AUnLzip/markdown)
- [IO::Compress::Lzop](http://localhost/phpMan.php/perldoc/IO%3A%3ACompress%3A%3ALzop/markdown)
- [IO::Uncompress::UnLzop](http://localhost/phpMan.php/perldoc/IO%3A%3AUncompress%3A%3AUnLzop/markdown)
- [IO::Compress::Lzf](http://localhost/phpMan.php/perldoc/IO%3A%3ACompress%3A%3ALzf/markdown)
- [IO::Uncompress::UnLzf](http://localhost/phpMan.php/perldoc/IO%3A%3AUncompress%3A%3AUnLzf/markdown)
- [IO::Compress::Zstd](http://localhost/phpMan.php/perldoc/IO%3A%3ACompress%3A%3AZstd/markdown)
- [IO::Uncompress::UnZstd](http://localhost/phpMan.php/perldoc/IO%3A%3AUncompress%3A%3AUnZstd/markdown)
- [IO::Uncompress::AnyInflate](http://localhost/phpMan.php/perldoc/IO%3A%3AUncompress%3A%3AAnyInflate/markdown)
- [IO::Uncompress::AnyUncompress](http://localhost/phpMan.php/perldoc/IO%3A%3AUncompress%3A%3AAnyUncompress/markdown)
- [IO::Compress::FAQ](http://localhost/phpMan.php/perldoc/IO%3A%3ACompress%3A%3AFAQ/markdown)
- [File::GlobMapper](http://localhost/phpMan.php/perldoc/File%3A%3AGlobMapper/markdown)
- [Archive::Zip](http://localhost/phpMan.php/perldoc/Archive%3A%3AZip/markdown)
- [Archive::Tar](http://localhost/phpMan.php/perldoc/Archive%3A%3ATar/markdown)
- [IO::Zlib](http://localhost/phpMan.php/perldoc/IO%3A%3AZlib/markdown)

RFC 1950, 1951, 1952: [http://www.faqs.org/rfcs/rfc1950.html](http://www.faqs.org/rfcs/rfc1950.html), [http://www.faqs.org/rfcs/rfc1951.html](http://www.faqs.org/rfcs/rfc1951.html), [http://www.faqs.org/rfcs/rfc1952.html](http://www.faqs.org/rfcs/rfc1952.html)