我试图避免必须包含其他库并在OSX上保持这个简单,使用自Snow Leopard以来OSX附带的默认Perl 。我也试图避免炮轰Bash 来运行解压缩。我发现this example几乎可以工作,但在这一行上死了:
my $fh = IO::File->new($destfile, "w") or die "Couldn't write to $destfile: $!";
出现此错误:
无法写入/ tmp / mytest /安装Norton Security.localized //:是test7.pl第42行的目录。
以前,我压缩了文件夹"安装Norton Security.localized"到mytest.zip并将其粘贴在/ tmp中。然后我创建了一个目录/ tmp / mytest。然后,我用
运行这个脚本 unzip("/tmp/mytest/mytest.zip","/tmp/mytest");
我还对脚本进行了lint语法检查,它回来没问题 - 没有警告我像Perl的许多其他zip库一样缺少库。
你的建议是什么?
答案 0 :(得分:0)
此例程适用于较旧的OSX,并且不涉及尽可能多的代码行。它还处理子文件夹。
#!/usr/bin/perl
use strict;
use warnings;
use Archive::Zip qw(:ERROR_CODES :CONSTANTS);
my $sSource = "/tmp/mytest.zip";
my $sDest = "/tmp/mytest";
x_unzip($sSource,$sDest);
sub x_unzip {
my ($zip_file, $out_file, $filter) = @_;
my $zip = Archive::Zip->new($zip_file);
unless ($zip->extractTree($filter || '', $out_file) == AZ_OK) {
warn "unzip not successful: $!\n";
}
}