小池啓仁 ヒロヒト応援ブログ By はてな

小池啓仁(コイケヒロヒト)の動画など。

小池啓仁 ヒロヒト応援ブログ By はてな

標準モジュールArchiveでgzipする!

ぱっと見、標準モジュールArchiveでは「tar」と「zip」しか出来ない感じがしますが・・・実は「tar」の中に「gzip」機能がありました。


以下のように、WindowsでもActivePerlがインストールされていれば、簡単に「tar.gz」が使えます。
環境は、以下の通り。

  • 任意のフォルダにtargz.pl、untargz.plとdataフォルダを準備する。
  • dataフォルダ中にfile.txtとfile2.txtを準備する。
  • file.txtとfile2.txtの中身は任意です。

◆ targz.pl(ファイルを纏めて圧縮)

use strict;
use warnings;
use Archive::Tar;

my @file =('data\file.txt', 'data\file2.txt');
my $targz_file = 'file.tar.gz';
my $tar = Archive::Tar->new();
$tar->add_files(@file);
$tar->write($targz_file, 1);

◆untargz.pl(tar.gzを解凍して元のファイルに復元)

use strict;
use warnings;
use Archive::Tar;

my $targz_file = 'file.tar.gz';
my $tar = Archive::Tar->new();
$tar->read($targz_file, 1);
$tar->extract();

ちなみに、writeメソッドとreadメソッドの第2引数を省略すると「tar」のみになり、「gzip」しない。