我需要这样做:
$ unpack file.7z | perl_process> out_file
该进程需要从流中读取解压缩的文件,因为它非常大,我需要节省空间。
目前我有(但不能这样做):
你能告诉我如何实现我的需求吗?
答案 0 :(得分:2)
所以每个档案只包含一个文件?
7z
命令行程序有一个-so
选项,可以将解压缩的输出发送到STDOUT。这意味着您可以通过管道将其发送到您的perl进程:
$ 7z e archive.zip -so | perl program.pl
或者您可以使用open
获取perl程序中的解压缩信息:
my $archive_file = 'archive.zip';
open my $archive_fh, '-|', "7z e $archive_file -so";
while ( <$archive_fh> ) {
# Process text line
}
如果您还没有7zip的命令行版本,那么您应该下载p7zip
described here