IO::Zlib(3perl) | Perl Programmers Reference Guide | IO::Zlib(3perl) |
IO::Zlib - IO:: style interface to Compress::Zlib
With any version of Perl 5 you can use the basic OO interface:
use IO::Zlib; $fh = new IO::Zlib; if ($fh->open("file.gz", "rb")) { print <$fh>; $fh->close; } $fh = IO::Zlib->new("file.gz", "wb9"); if (defined $fh) { print $fh "bar\n"; $fh->close; } $fh = IO::Zlib->new("file.gz", "rb"); if (defined $fh) { print <$fh>; undef $fh; # automatically closes the file }
With Perl 5.004 you can also use the TIEHANDLE interface to access compressed files just like ordinary files:
use IO::Zlib; tie *FILE, 'IO::Zlib', "file.gz", "wb"; print FILE "line 1\nline2\n"; tie *FILE, 'IO::Zlib', "file.gz", "rb"; while (<FILE>) { print "LINE: ", $_ };
"IO::Zlib" provides an IO:: style interface to Compress::Zlib and hence to gzip/zlib compressed files. It provides many of the same methods as the IO::Handle interface.
Starting from IO::Zlib version 1.02, IO::Zlib can also use an external gzip command. The default behaviour is to try to use an external gzip if no "Compress::Zlib" can be loaded, unless explicitly disabled by
use IO::Zlib qw(:gzip_external 0);
If explicitly enabled by
use IO::Zlib qw(:gzip_external 1);
then the external gzip is used instead of "Compress::Zlib".
If the external gzip is used, the following "open"s are used:
open(FH, "gzip -dc $filename |") # for read opens open(FH, " | gzip > $filename") # for write opens
You can modify the 'commands' for example to hardwire an absolute path by e.g.
use IO::Zlib ':gzip_read_open' => '/some/where/gunzip -c %s |'; use IO::Zlib ':gzip_write_open' => '| /some/where/gzip.exe > %s';
The %s is expanded to be the filename ("sprintf" is used, so be careful to escape any other "%" signs). The 'commands' are checked for sanity - they must contain the %s, and the read open must end with the pipe sign, and the write open must begin with the pipe sign.
perlfunc, "I/O Operators" in perlop, IO::Handle, Compress::Zlib
Created by Tom Hughes <tom@compton.nu>.
Support for external gzip added by Jarkko Hietaniemi <jhi@iki.fi>.
Copyright (c) 1998-2004 Tom Hughes <tom@compton.nu>. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
2023-11-25 | perl v5.32.1 |