假设我有一个名为 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中做同样的事情?
答案 0 :(得分:1)
在Perl中有许多用于解压缩的选项。
第一个是只在Perl中运行shell命令。
system 'unzip -Z1 myPartial.zip | grep -v "/$" >> my.log';
接下来是使用zip模块之一。有一些,包括Archive::Zip,IO::Uncompress::Unzip和Archive::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)
谢谢大家。使用系统命令可以正常工作。