如何在 perl 中创建 zip 文件?

Thi*_*ATR 3 perl zip

嗨,朋友们,我可以使用脚本当前运行的目录中的文件创建一个 zip 文件,现在我想从各个目录创建 zip 文件,有人可以帮助我吗?我的代码是;

use IO::Compress::Zip qw(:all);

  zip [ glob("inventory_report_for_neus.xls") ] => "my.zip"
    or die "Cannot create zip file: $ZipError" ;
Run Code Online (Sandbox Code Playgroud)

这将生成包含特定文件的 zip 文件,但是

use IO::Compress::Zip qw(:all);

      zip [ glob("..\\inventory_report_for_neus.xls") ] => "my.zip"
        or die "Cannot create zip file: $ZipError" ;
Run Code Online (Sandbox Code Playgroud)

这也是生成zip文件,但里面没有文件!

小智 5

更新

IO::Compress::Zip根据当前目录中文件的原始位置创建具有分层结构的 zip 文件。

但是,这样做的结果是它无法正确处理当前工作目录之外的文件。

最简单的解决方案可能是在压缩之前将目录更改为父目录。如果这不是一个选项,请在压缩之前将文件复制到临时位置,或者可能使用IO::Compress::Zip更高级的功能,例如从文件句柄写入 zip 文件。