在Perl中压缩一个完整的目录

时间:2015-10-28 05:00:30

标签: perl

我试过压缩包含perl子目录和文件的目录,这是我的代码。

<h5>{{ job.JobNumber] }} {{ job.jobTitle] }}</h5>

执行此操作时,会创建zip文件(sample.zip)。

始终手动选择选项&#34;完成解压缩。提取到这里&#34;。

当我解压缩时,目录突然打开,将所有子文件夹和文件放在同一位置(D:\ out)。

我想要的是,我希望输出是一个独特的文件夹(D:\ out \ sample)

因此,我的代码需要做哪些更改。请帮助我。

1 个答案:

答案 0 :(得分:1)

来自docs

  

$ zip-&gt; addTree($ root,$ dest [,$ pred,$ compressionLevel]) - 将文件树添加到邮政编码

     

$root是要添加的文件和目录树的根。它   是系统上的有效目录名称。 $dest是该名称   zip文件中的root(undef或空白表示使用相对路径名)。   它是一个有效的ZIP目录名称(也就是说,它使用正斜杠(/)   用于分隔目录组件。)

以及示例,也来自文档:

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

# add all readable files and directories below . as xyz/*
$zip->addTree( '.', 'xyz' );

# add all readable plain files below /abc as def/*
$zip->addTree( '/abc', 'def', sub { -f && -r } );

# add all .c files below /tmp as stuff/*
$zip->addTreeMatching( '/tmp', 'stuff', '\.c$' );

# add all .o files below /tmp as stuff/* if they aren't writable
$zip->addTreeMatching( '/tmp', 'stuff', '\.o$', sub { ! -w } );

# add all .so files below /tmp that are smaller than 200 bytes as stuff/*
$zip->addTreeMatching( '/tmp', 'stuff', '\.o$', sub { -s < 200 } );

# and write them into a file
$zip->writeToFileNamed('xxx.zip');

# now extract the same files into /tmpx
$zip->extractTree( 'stuff', '/tmpx' );