我試圖從一個大的「.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文件而不將其全部加載到內存中的迭代器函數。」不知道這是真的,但它可能是值得一試... –