如何解压缩“ .zip”档案并使用PERL将输出重定向到指定文件?

时间:2019-05-21 10:24:37

标签: shell perl

假设我有一个名为 public function getVisitByCustomer($customer_id) { //$visits = Visit::where('customer_id',$customer_id)->get(); $visits = Visit::find($customer_id); return response()->json($visits, 200); } 的zip文件,我想解压缩此myPartial.zip档案,并将输出重定向到名为myPartial.zip的文件。

为此,我可以使用以下shell脚本:

output.txt

我的问题是我该如何在PERL中做同样的事情?

4 个答案:

答案 0 :(得分:1)

在Perl中有许多用于解压缩的选项。

第一个是只在Perl中运行shell命令。

system 'unzip -Z1 myPartial.zip | grep -v "/$" >> my.log';

接下来是使用zip模块之一。有一些,包括Archive::ZipIO::Uncompress::UnzipArchive::Zip::SimpleUnzip

是否需要使用其中一个模块取决于您的工作要求。

答案 1 :(得分:0)

您可以尝试使用system方法直接运行shell命令:

system("unzip -Z1 myPartial.zip | grep -v "/$" >> my.log");

如果您想在执行完成后终止脚本,请使用exec方法:

exec("unzip -Z1 myPartial.zip | grep -v "/$" >> my.log");

如果要直接在PERL中处理程序的输出,只需使用反引号执行命令并获取其输出:

$response = `unzip -Z1 myPartial.zip | grep -v "/$" >> my.log`;

然后您可以使用print预览输出,如下所示:

print $response;

祝你好运。

答案 2 :(得分:0)

好的,因此unzip -Z1 foo.zip似乎列出了zip存档中文件的文件名,而不是提取文件。将所有内容都放在一个文件中更有意义。而且您只需要文件,而不是目录。

所以是一排perl:

perl -MArchive::Zip -E '$, = "\n"; say grep { m![^/]$! } Archive::Zip->new($ARGV[0])->memberNames' foo.zip >> my.log

但是,实际上,像您已经使用的那样使用unzip / zipinfo更容易。

答案 3 :(得分:0)

谢谢大家。使用系统命令可以正常工作。