Perlのzlibインターフェイスは沢山あってよく分からないが、単純に圧縮/解凍をするだけならCompress::Raw::Zlibがシンプルで良さそうだ。 これでzcat(1)を実装すると以下のようになる。 #!perl -w use strict; use Compress::Raw::Zlib; my $z = Compress::Raw::Zlib::Inflate->new( -WindowBits => WANT_GZIP, ); foreach my $file(@ARGV) { open my $fh, '<', $file or die "Cannot open $file: $!"; while(read $fh, my $buf, 1024) { my $d; my $status = $z->inflate($buf, \$d, 1); ($status == Z_