我有以下perl脚本,旨在接受命令行参数,将所有用户数据文件压缩到zip文件中,然后删除原始数据。脚本没有问题,但是当以不同的用户作为参数再次运行时,它会覆盖userData.zip文件中的以前的数据。我搜索了并且无法找到如何执行此任务。它应该继续接受用户作为参数并将其文件夹追加到userData.zip文件中。在perl中将文件添加到压缩文件夹中
任何帮助表示赞赏。
use 5.14.2;
use strict;
use warnings;
use Archive::Zip qw(:ERROR_CODES :CONSTANTS);
use File::Path;
my ($DATAFILEIN, $DATAFILEOUT);
my ($new,$zip);
use constant COLUMNS => 6;
sub main {
verifyArguments();
setDataFileIn();
zipFiles();
deleteUserFiles();
#setDataFileOut();
#printData();
#writeData();
}
sub verifyArguments {
if (!(@ARGV) || !(-e $ARGV[0])) {
die "\n\nYou must specify correct file name upon command invocation.\n\n";
}
}
sub setDataFileIn {
$DATAFILEIN = $ARGV[0];
}
sub zipFiles {
print "\nBacking up ".$DATAFILEIN."\n";
sleep 1;
$zip = Archive::Zip->new();
opendir (DIR, $DATAFILEIN) or die $!;
while (my $file = readdir(DIR)) {
# Use -f to look for a file
next unless (-f $DATAFILEIN."\\".$file);
$zip->addFile($DATAFILEIN."\\".$file,);
print "Added $file to zip\n";
}
closedir(DIR);
my $fileName = $DATAFILEIN;
unless ($zip->writeToFileNamed('userData.zip') == AZ_OK) {
die 'write error';
}
print "Successfully backed up $fileName to userData.zip\n";
}
sub deleteUserFiles{
rmtree($DATAFILEIN);
}
main();
你好,谢谢你的回复。这份文件在哪里列出?我在这里搜索了perldoc.perl.org和perlmonks。我只是一个初学者,所以我需要查看示例以了解语法。 – Number41
@ Number41真的吗?在几乎任何搜索引擎上搜索“perl archive :: zip”都会产生一个[CPAN页面](https://metacpan.org/pod/Archive::Zip)作为第一个结果。 –
马特,你是对的,搜索确实会把它作为第一个结果。对不起,我的无知.........只是寻求一些帮助。我想我会在这里找到一个更清晰和简洁的答案,猜测我错了。 – Number41