【发布时间】:2014-01-23 18:55:49
【问题描述】:
作为 Perl 脚本的一部分,我正在尝试从 zip 文件夹中读取组件,而无需解压缩它们。经过一番研究,我开始尝试使用 Archive::Zip::MemberRead 并创建了一个 test.zip ,其中包含一个带有 2 个文本字段的测试文件夹,它似乎工作正常。我面临的问题是我实际上需要解析内容的 zip 文件只有 zip 中的所有 .txt、.dat、.csv 文件,而没有似乎导致问题的子目录。 test.zip 包含大约 30 个不同的压缩文件,包括 node_info.txt,我一直在使用下面的代码,当 zip 文件夹中有一个子目录时它可以工作。
my $zip = Archive::Zip->new("C:\\test.zip");
my $fh = Archive::Zip::MemberRead->new($zip,'node_info.txt');
while (defined(my $line = $fh->getline()))
{
print $line . "\n";
}
当我尝试运行它时出现错误 Can't call method "readChunk" on an undefined value at C:/Perl/lib/Archive/Zip/MemberRead.pm 第 268 行。我需要做些不同的事情吗当传递要读取的特定成员时?
【问题讨论】:
-
您只需要使用 Perl 吗?另一种方法是使用 Perl 来驱动像
7zip这样的命令行应用程序。 -
不是必需的,但尽量避免使用第 3 方的东西,因为人们会在多台机器上运行它,所以我希望尽可能降低依赖关系。