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

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

format error: can't find EOCD signature


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

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


でめたしでめたし。

Perlでgzファイルを解凍する」への3件のフィードバック

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

admin へ返信する コメントをキャンセル

メールアドレスが公開されることはありません。 が付いている欄は必須項目です