Perlでgzファイルを解凍する

未分類 Add comments

Perlでzipファイルを扱うには「Archive::Zip」というモジュールが便利なのですが、gzファイルも同じ感覚で扱おうとしたら以下のようなエラーが出ました。

format error: can't find EOCD signature


エラー処理をしないとさらに5行ぐらい表示されます。
どうもgzファイルには対応していないらしいです。
調べてみると「Compress::Zlib」というモジュールが使えるらしいので弄ってみました。
そもそもgzという圧縮形式はファイルをアーカイブする機能がないので、圧縮ファイルと解凍ファイルは1対1の関係です。サンプルではバッファの展開しか載っていないので、とりあえずその方法で使いました。

$dest = Compress::Zlib::memGunzip($buffer);


でめたしでめたし。

3 Responses to “Perlでgzファイルを解凍する”

  1. perlcodesample Says:

    gzの解凍はArchive::Tarでできますよ。

  2. admin Says:

    Archive::Tarでも解凍できたんですか。
    もしかするとtar.gz用なのかもしれませんね。
    どちらが何用ってのがあるのかよく分かりませんが、とりあえずはCompress::Zlibを使っておきます。
    内部的にはお互いがお互いを呼んでいるようですし。

  3. admin Says:

    cpanシェルではgzの解凍にCompress:Zlibを使っていますね。

Leave a Reply

WP Theme & Icons by N.Design Studio
Entries RSS Comments RSS ログイン