addFile
ご覧のとおり、ディスク ファイルをアーカイブに追加するために使用する場合、Archive::Zip
はファイルが元々持っていたパスと同じパスを持つアーカイブ メンバーを追加します。別のものとして保存したい場合は、作成されたアーカイブ メンバーの名前とパスとして使用される 2 番目のパラメーターを渡すことができます。
目的のために、coreFile::Basename
モジュールを使用してファイル名からパスを削除し、ベース名のみを 2 番目のパラメーターとして渡すことをお勧めします。
以下のコードはその例です。
他に注意する必要があるのは、単一のバックスラッシュを Perl の二重引用符で使用できないことです。バックスラッシュは次の文字をエスケープしていると見なされ、単に消えてしまいます。文字列にバックスラッシュのペアを使用したり、代わりに一重引用符を使用したり、代わりにスラッシュを使用したり (Perl が処理します)、ファイル名にスペースがない場合qw()
は、このプログラムのように使用できます。
use strict;
use warnings;
use Archive::Zip;
use File::Basename 'basename';
my @files = qw/
C:\Windows\Perl\test1.txt
C:\Windows\Perl\test2.txt
C:\Windows\Perl\test3.txt
/;
my $zip = Archive::Zip->new;
foreach my $file (@files) {
my $member = basename $file;
printf qq{Adding file "%s" as archive member "%s"\n}, $file, $member;
$zip->addFile($file, $member);
}
$zip->writeToFileNamed('zippedFolders.zip');
出力
Adding file "C:\Windows\Perl\test1.txt" as archive member "test1.txt"
Adding file "C:\Windows\Perl\test2.txt" as archive member "test2.txt"
Adding file "C:\Windows\Perl\test3.txt" as archive member "test3.txt"