• 締切済み

perl で gz 圧縮する方法

 よろしくお願いします。  Perlで、次のようなプログラムを作ることになっています。 1 インターネット上からとあるファイル(容量はだいたい15kb程度、画像ファイルとか音声ファイルではありません)をダウンロードする。 2 このファイルをgz形式で圧縮する。 3 ファイル名を変更する。  この作業を多数回行う必要がある関係で、プログラムを組んでいます。  この点、1と3のプログラムは書けたのですが、2の部分が分からなくて困っています。 いろいろインターネットで検索したところ、「Archive::Tar;」を使っていると説明しているサイトがあって、それを参考にプログラムを組んでみました。  次のようなプログラムを組んでみましたが、gz形式に圧縮されないようです(圧縮されたファイルを再び解凍してみたところ、元のファイルに戻らなかった)。 use Archive::Tar; my $tar = Archive::Tar->new(); $tar->add_files( $newfilename1 ); $tar->write( $newfilename2 , 3 ); ( $newfilename1 はダウンロードしたファイル名、$newfilename2 は gz形式に圧縮したファイルの名前です)  この4行のプログラムは正しいのでしょうか?  間違っているのであれば、どこを直せばよいでしょうか?  よろしくお願いします。

みんなの回答

  • mk48a
  • ベストアンサー率56% (1133/2007)
回答No.1

Archive::Tar は、tar形式(無圧縮)でアーカイブするものです。 gzで圧縮・回答したい場合には、 コマンドラインで使用するか、 http://hw001.spaaqs.ne.jp/k-okada/computer/perl/perl_gzip_100505a.html CPAN(perl module)のIO::Compress::Gzipを使用するのが良いかと思います。 http://search.cpan.org/~pmqs/IO-Compress-2.063/lib/IO/Compress/Gzip.pm CPANのインストール方法 http://fakeyakuza.hatenablog.com/entry/2012/12/14/CPAN%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%8B%E3%82%89%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB

関連するQ&A