我一直在尝试使用
system("tar -jcvf archive_name.tar.bz2 $my_file")
但我得到一个错误
archive_name.tar.bz2:无法打开:没有这样的文件或目录 tar:错误不可恢复:现在退出 tar:子返回状态 2
在 perl 中使用此方法无法创建 .tar.bz2 吗?我宁愿不使用模块,但如果绝对必要,我会
我一直在尝试使用
system("tar -jcvf archive_name.tar.bz2 $my_file")
但我得到一个错误
archive_name.tar.bz2:无法打开:没有这样的文件或目录 tar:错误不可恢复:现在退出 tar:子返回状态 2
在 perl 中使用此方法无法创建 .tar.bz2 吗?我宁愿不使用模块,但如果绝对必要,我会
首先,你不是在 Perl 中做的。您正在生成一个运行该命令的单独进程。
如果您想在 Perl中执行此操作,则需要使用Archive::Tar模块,可能还需要使用IO::Compress::Bzip2模块。
首先是看看你是否可以直接从命令行运行这个命令:
$ tar -jcvf archive_name.tar.bz2 $my_file
如果您不能从命令行运行 tar 命令,那么在 Perl 中使用该system
命令就不太可能运行它。
您运行命令的方式,将命令和所有参数放在一个字符串中,导致 Perl 从 shell(通常/bin/sh
)运行命令。如果您使用列表中的参数运行命令,Perl 将直接运行该命令而无需 shell:
my $error = system qw( tar -jcvf archive_name.tar.bz2 $my_file );
始终检查系统命令的输出以及$?
. 系统命令文档有更多关于处理错误的信息。