用Perl读取zip文件内容

用Perl读取zip文件内容,perl,zip,Perl,Zip,作为Perl脚本的一部分,我尝试从zip文件夹中读取组件,而不解压缩它们。经过一些研究,我开始尝试使用Archive::Zip::MemberRead,在创建了一个包含两个文本字段的test.Zip文件夹之后,它似乎工作得很好。我面临的问题是,我实际上需要解析的zip文件的内容只有zip中的所有.txt、.dat、.csv,没有子目录,这似乎是导致问题的原因。test.zip包含大约30个不同的压缩文件,包括node_info.txt,我一直在使用下面的代码,当zip文件夹中有一个子目录时,这些

作为Perl脚本的一部分,我尝试从zip文件夹中读取组件,而不解压缩它们。经过一些研究,我开始尝试使用Archive::Zip::MemberRead,在创建了一个包含两个文本字段的test.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。在传递要读取的特定成员时,是否需要执行一些不同的操作?

我建议在指定的zip文件中没有“node_info.txt”。如果我试图访问一个不存在的条目,至少这正是我收到的错误消息。请注意,Zip文件中的名称可能区分大小写,与windows文件系统中的名称不同


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

是否只需要使用Perl?另一种方法是使用Perl来驱动命令行应用程序,如7zip。这不是必需的,但尽量避免使用第三方的东西,因为这将是人们在多台机器上运行的东西,所以我希望尽可能减少依赖性。