我在以下位置/ aaa / bbb / ccc中有一个example.7z zip文件。我需要在同一位置提取该zip文件。我尝试了很多方法,但无法获得正确的输出。请帮帮我。提前谢谢!
use strict ;
use warnings ;
use IO::Uncompress::Unzip qw(unzip $UnzipError) ;
use IO::File ;
my $input = '/aaa/bbb/ccc/example.7z';
my $zip = (split(/\//, $input))[-1]; #to extract the example.7z
my $buffer = '/aaa/bbb/ccc/';
unzip $zip => \$buffer
or die "unzip failed: $UnzipError\n"
我试过这个方法。这个例子.7z zip文件包含三个.BIN文件。我需要提取它们。目前我在该位置获取任何输出。
答案 0 :(得分:0)
我建议你使用
Archive::SevenZip
模块。
通过阅读文档和做一些实验,我想出了这段代码。
use strict;
use warnings 'all';
use Archive::SevenZip;
my $ar = Archive::SevenZip->new(
archivename => "YourArchive.7z",
find => 1,
);
for my $entry ( $ar->list ) {
next unless $entry->{Attributes} =~ /^A/;
my $target = join "/", "YourExtractedFolderName", $entry->basename;
$ar->extractMember( $entry->fileName, $target );
}
所有文件都被解压缩到文件夹的根目录,因为我测试$entry
是否为文件(文件$entry->{'Attributes'}
为A
,目录为D
。知道这一点,您可以通过修改我的代码来提取文件夹。
您还应检查存档是否存在,否则将返回错误。