我需要在perl.enter代码中创建一个zip文件 例如现有文件名是2.csv我想要一个脚本使它成为2.zip 我试过了
my $file = 'dispatch_report_seg_flo.csv' ;
# Retrieve the namme of the file to archive.
print("Name the file to archive: ");
# Confirm the file exists, if not exit the program.
(-e $file) or die("Cannot find file `$file_nm`.\n");
# Zip the file.
print("Trying file name '$file.zip'");
system("zip 'dispatch.zip' '$file'");
my $file1 = 'dispatch.zip';
答案 0 :(得分:5)
除非文件名中包含单引号,否则应该有效。以下是两种更好的方法:
system($EXECUTABLE, @ARGS)
,它不会不必要地产生一个shell。
system("zip", "dispatch.zip", $file);
system($SHELL_COMMAND)
,需要创建一个shell命令。
# A poor substitute for String::ShellQuote's shell_quote
sub shell_quote {
my @s = @_;
for (@s) { s/'/'\\''/g; $_ = "'$_'"; }
return join(' ', @s);
}
system(shell_quote("zip", "dispatch.zip", $file));
显然,第一个解决方案更好,但是如果你想进行某种shell重定向,你可能想要使用这个解决方案。
system(shell_quote("zip", "dispatch.zip", $file) . ' >/dev/null');
答案 1 :(得分:1)
此链接可以帮助您...... create and read tar.bz2 files in perl 如果您想使用perl模块压缩文件,请使用
use IO::Compress::Zip qw(:all);
zip [ glob("*.xls") ] => "test_zip.zip"
or die "some problem: $ZipError" ;
如果需要
,请将这些行添加到使用脚本中答案 2 :(得分:-1)
删除'字符:
system("zip dispatch.zip $file");