Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos 从OSX上的默认Perl,如何解压缩到文件夹?_Macos_Perl_Zip_Unzip_Compression - Fatal编程技术网

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

Macos 从OSX上的默认Perl,如何解压缩到文件夹?,macos,perl,zip,unzip,compression,Macos,Perl,Zip,Unzip,Compression,我试图避免包含其他库,并在OSX上保持简单,使用自Snow Leopard以来OSX附带的默认Perl。我还试图避免炮击来运行解压。我找到了几乎所有的作品,但都死在这一行: my $fh = IO::File->new($destfile, "w") or die "Couldn't write to $destfile: $!"; 出现此错误时: 无法写入/tmp/mytest/Install Norton Security.localized//:是test7.pl第42行的目录 之前,我

我试图避免包含其他库,并在OSX上保持简单,使用自Snow Leopard以来OSX附带的默认Perl。我还试图避免炮击来运行解压。我找到了几乎所有的作品,但都死在这一行:

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

无法写入/tmp/mytest/Install Norton Security.localized//:是test7.pl第42行的目录

之前,我将文件夹“Install Norton Security.localized”压缩到mytest.zip,并将其插入/tmp。然后我创建了一个目录/tmp/mytest。然后,我用

unzip(“/tmp/mytest/mytest.zip”,“/tmp/mytest”)

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


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

此例程适用于较旧的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";
    }
}
资料来源: