如何使用 Perl 解压缩".zip"存档并将输出重定向到指定的文件?



说我有一个称为 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;

祝你好运。

最新更新