从OSX上的默认Perl,如何解压缩到文件夹?

时间:2015-12-03 07:03:06

标签: macos perl zip unzip compression

我试图避免必须包含其他库并在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库一样缺少库。

你的建议是什么?

1 个答案:

答案 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";
    }
}

消息来源:https://gist.github.com/mshock/4156726