まず第一に、あなたはそれを Perl でやっているわけではありません。コマンドを実行する別のプロセスを生成しています。
Perlでこれを行いたい場合は、Archive::Tarモジュールと、場合によってはIO::Compress::Bzip2モジュールも使用する必要があります。
最初に、コマンド ラインからこのコマンドを直接実行できるかどうかを確認します。
$ tar -jcvf archive_name.tar.bz2 $my_file
コマンド ラインから tar コマンドを実行できない場合、このコマンドを使用して Perl 内から実行できる可能性はほとんどありませんsystem
。
コマンドと単一の文字列内のすべての引数を使用してコマンドを実行した方法により、Perl はシェル (通常は/bin/sh
) からコマンドを実行します。リスト内の引数を指定してコマンドを実行すると、Perl はシェルなしでコマンドを直接実行します。
my $error = system qw( tar -jcvf archive_name.tar.bz2 $my_file );
system コマンドの出力と の値を常に確認してください$?
。システムコマンドのドキュメントには、処理エラーに関する詳細情報が記載されています。