wes*_*ith 1 perl extract tar archive
我正在尝试使用大型".tgz"文件中的单个文件.我正在使用Archive :: Tar :: Streamed模块.
这是示例代码.
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;
}
}
Run Code Online (Sandbox Code Playgroud)
但迭代器不起作用.它循环存档中的第一个文件而不是移动到下一个文件.谁能告诉我我在这里做了什么错误?
您将呼叫next置于您的内部if,因此仅在您解压缩文件时执行.$fil如果未提取文件,则在循环内部没有任何修改.
您可以通过在while循环的条件下调用迭代器来简化代码.此外,您可以使用=~绑定运算符而不是存储名称$_.而你不需要/g这里的正则表达式修饰符.在标量上下文中,您使用/g循环遍历字符串中的多个匹配项.在这里,您只需知道字符串是否包含匹配项.
my $tar2 = Archive::Tar::Streamed->new($filename);
while(my $fil = $tar2->next) {
if($fil->name =~ m/abc\.txt/) {
$fil->extract($outpath);
}
}
Run Code Online (Sandbox Code Playgroud)