使用Perl读取zip文件内容

时间:2014-01-23 18:55:50

标签: perl zip

作为Perl脚本的一部分,我试图从zip文件夹中读取组件而不解压缩它们。经过一些研究后,我开始尝试使用Archive :: Zip :: MemberRead,在创建一个包含带有2个文本字段的测试文件夹的test.zip后,它似乎工作正常。我面临的问题是我实际上需要解析zip文件的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";
}

当我尝试运行它虽然它出错但无法在C:/Perl/lib/Archive/Zip/MemberRead.pm第268行的未定义值上调用方法“readChunk”。我需要做些什么不同的事情吗?什么时候通过特定成员阅读?

1 个答案:

答案 0 :(得分:0)

我建议指定的zip文件中没有'node_info.txt'。至少那是我尝试访问不存在的条目时得到的错误消息。请注意,Zip文件中的名称可能区分大小写,这与它们在Windows文件系统中的方式相反。

添加一些错误检查可能非常有用,例如:检查$ zip是否为真(可以打开Zip文件)并且$ fh为真(Zip文件中存在条目)。