在perl中创建和读取tar.bz2文件

时间:2012-11-28 20:23:32

标签: perl compression tar

我一直在尝试使用

system("tar -jcvf archive_name.tar.bz2 $my_file")

但是我收到了错误

  

archive_name.tar.bz2:无法打开:没有此类文件或目录   tar:错误无法恢复:现在退出   tar:孩子返回状态2

是不是可以在perl中使用此方法创建.tar.bz2?我宁愿不使用模块,但如果绝对必要,

1 个答案:

答案 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命令文档提供了有关处理错误的更多信息。