Archive::Zip を使用して zip アーカイブを作成しようとすると、エラーはスローされませんが、結果の zip ファイルは壊れています。
use Archive::Zip;
my $zip = Archive::Zip->new();
my $file = "/a/very/long/path/with/191/characters/file.txt";
if(-f $file)
{
$zip->addFile("$file", "destinationname.txt");
print "$file added\n";
}
unless ($zip->writeToFileNamed("out.zip") == "AZ_OK") { die "error";};
今、私の out.zip ファイルはちょうど 22B で、空です:
$> > unzip -l out.zip
Archive: out.zip
warning [out.zip]: zipfile is empty
何がうまくいかないのですか?
最初の更新: パス名が短いファイルを使用すると、すべて正常に動作します。回避策はありますか?シンボリックリンクは機能しません。
2 番目の更新: これは回避策として機能します。
use File::Slurp;
[...]
my $text = read_file($file);
$zip->addString($text, "destinationfile.txt");
[..]