PerlでZIP/UNZIP
WindowsXPでは標準装備で、ZIPでの圧縮/解凍機能がありますが・・・。
Perlでも標準モジュール(Archive)で、ZIPでの圧縮/解凍機能があります。
簡単なサンプルを組んで見ましたので、何かの機会に参考になれば幸いです。
◆ZIP圧縮サンプル(zip.pl)
use strict; use warnings; use Archive::Zip; my $zip_file = 'file.zip'; my $zip = Archive::Zip->new(); $zip->addFile('data/file.txt'); $zip->addFile('data/file2.txt'); $zip->addTree('aaa', 'aaa'); $zip->addTree('bbb', 'ccc'); $zip->addTree('./a/b/c', 'd'); $zip->writeToFileNamed($zip_file);
addFileは引数のファイルを、addTreeは第1引数のフォルダをZIP圧縮します。
ちなみに、addTreeの第2引数は解凍される時のフォルダ名を指定します。
圧縮は、引数で指定したファイルやフォルダがあるフォルダ内でzip.plを実行します。
◆ZIP解凍サンプル(unzip.pl)
use strict; use warnings; use Archive::Zip; my $dir = '.'; my $zipfile = "$dir/file.zip"; my $zip = Archive::Zip->new($zipfile); my @members = $zip->memberNames(); foreach (@members) { $zip->extractMember($_, "$dir/$_"); }
解凍は、file.zipがある同じフォルダ内でunzip.plを実行します。