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

From Default Perl on OSX, How To Unzip To Folder?

我试图避免必须包含其他库并在 OSX 上保持简单,使用自 Snow Leopard[=29] 以来 OSX 附带的默认 Perl =].我也在尝试 避免将 Bash 解压缩到 运行。我发现 this example 几乎可以工作,但死在这条线上:

my $fh = IO::File->new($destfile, "w") or die "Couldn't write to $destfile: $!";

出现此错误:

Couldn't write to /tmp/mytest/Install Norton Security.localized//: Is a directory at test7.pl line 42.

之前,我将文件夹 "Install Norton Security.localized" 压缩到 mytest.zip 并将其粘贴在 /tmp 中。然后我创建了一个目录 /tmp/mytest。然后,我 运行 这个脚本

unzip("/tmp/mytest/mytest.zip","/tmp/mytest");

我还对脚本进行了 lint 语法检查,结果正常——没有像许多其他 Perl zip 库那样警告我缺少库。

您建议的解决方法是什么?

此例程适用于较旧的 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