我试图从一个大的“.tgz”文件中找到单个文件。我正在使用Archive::Tar::Streamed模块。使用Perl从巨大的档案文件中提取单个文件
以下是示例代码。
my $tar2 = Archive::Tar::Streamed->new($filename);
$fil = $tar2->next;
while($fil) {
$_ = $fil->name;
if(m/abc\.txt/g) {
$fil->extract($outpath);
$fil = $tar2->next;
}
}
但迭代器不工作。它正在循环档案中的第一个文件,而不是移动到下一个文件。 有人能告诉我我在这里做了什么错误?
也许你可以使用'存档:: Tar',这是核心的,也有某种流的支持,请参阅:https://metacpan.org/module/Archive::Tar#Archive: :Tar-iter-filename-compressed-opt-val –
我无法使用Archive :: Tar,因为我的tgz文件大小超过8GB。我会记忆问题。 – wesfaith
你检查了链接吗?它说:“返回读取tar文件而不将其全部加载到内存中的迭代器函数。”不知道这是真的,但它可能是值得一试... –