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