在perl中压缩目录时出错

时间:2015-08-24 06:17:35

标签: perl

我找不到与我面临的错误相关的问题。 请道歉,如果它在那里,我找不到相同的。

我在Perl中压缩目录时遇到错误。错误是

“-1之前的统计数据不是第一位的c:/Perl/site/lib/Archive/Zip.pm第2885行。”。

以下是我的代码。

#!/usr/bin/perl -w
use strict;

use warnings;

use Archive::Zip qw(:ERROR_CODES :CONSTANTS);

my $directory = 'D:\MyBooks\Data\Super Folder';

my $obj = Archive::Zip->new();

opendir (DIR, $directory) or die $!;

my @filearray = readdir(DIR);

close(DIR);


foreach my $file(@filearray)
{

    $obj->addFile($file);   # add files
}


if ($obj->writeToFileNamed('dummy.zip') == AZ_OK) 
{  

    print "Archive created successfully!";
} 
else 
{

    print "Error while Zipping !";
} 

1 个答案:

答案 0 :(得分:1)

  1. 您正在获取D:\MyBooks\Data\Super Folder中的文件列表,但是您要告诉Archive :: Zip压缩当前目录中的文件。

  2. 您说您想要存储整个目录树,但您甚至都没有尝试这样做。

  3. 按照文档进行操作,您需要:

    use File::Find::Rule qw( );
    
    my $dir_qfn = 'D:\MyBooks\Data\Super Folder';
    for my $qfn ( File::Find::Rule->new->relative->in($dir_qfn) ) {
       $archive->addFileOrDirectory("$dir_qfn/$qfn", $qfn);
    }