*圧縮 既に変数に入っているデータを圧縮する時は、 require Compress::Zlib; $compressed_data = Compress::Zlib::memGzip ($original_data); で OK。 *展開 変数にあるデータを展開する手軽な方法がなぜかありません。 (Google で探しても見つからない。) ## Taken from Namazu , filter/gzip.pl my $s = $original_data; ## compressed data my $flags = unpack('C', substr($s, 3, 1)); $s = substr($s, 10); $s = substr($s, 2) if ($flags & 0x04); $s =~ s/^[^\0]*\0// if ($flags & 0x08); $s =~ s/^[^\0]*\0// if ($flags & 0x10); $s = substr($s, 2) if ($flags & 0x02); my $zl = Compress::Zlib::inflateInit (-WindowBits => - Compress::Zlib::MAX_WBITS()); my ($inf, $stat) = $zl->inflate ($s); if ($stat == Compress::Zlib::Z_OK() || $stat == Compress::Zlib::Z_STREAM_END()) { return $inf; } else { die 'Bad compressed data'; } Namazu から拝借してきたもの (をちょっといじったもの) です。 ちなみに Namazu のライセンスは GNU GPL2 です。 Gzip の外部ファイルからの読み込みなら、 Gompress::Zlib の関数が使えます。 *See also -[[符号化]] -[[圧縮]] --[[gzip]]