说我有一个称为 myPartial.zip
的zip文件,我想解压缩此 myPartial.zip
存档,然后将输出重定向到一个称为 output.txt
的文件。
为了实现这一点,我可以使用以下shell脚本:
unzip -Z1 myPartial.zip | grep -v "/$" >> my.log
我的问题是我如何在perl中做同样的事情?
有很多用于解压缩的选项。
第一个是在perl中运行shell命令。
system 'unzip -Z1 myPartial.zip | grep -v "/$" >> my.log';
接下来是使用邮政编码之一。有一些,包括存档:: zip,io :: uncompress :: unzip and Archive :: zip :: simpleunzip。
您是否需要使用其中一个模块取决于您正在做的事情的要求。
好吧,所以 unzip -Z1 foo.zip
似乎列出了zip存档中文件的 fileNames ,而不是提取文件。对于想要一个文件中的所有内容而言,这更有意义。而您只需要文件,而不是目录。
所以一个单线:
perl -MArchive::Zip -E '$, = "n"; say grep { m![^/]$! } Archive::Zip->new($ARGV[0])->memberNames' foo.zip >> my.log
但实际上,只使用 unzip
/zipinfo
就更容易。
您可以尝试使用system
方法直接运行shell命令:
system("unzip -Z1 myPartial.zip | grep -v "/$" >> my.log");
如果您想完成执行后终止脚本,请使用exec
方法:
exec("unzip -Z1 myPartial.zip | grep -v "/$" >> my.log");
如果要直接在Perl中处理程序的输出,只需使用Backticks执行命令并获取其输出:
$response = `unzip -Z1 myPartial.zip | grep -v "/$" >> my.log`;
然后,您可以使用print
预览输出,例如:
print $response;
祝你好运。