0

私は使用しようとしてきた

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

しかし、私はエラーが発生します

archive_name.tar.bz2: 開けません: そのようなファイルまたはディレクトリはありません tar: エラーは回復できません: 今すぐ終了します tar: 子がステータス 2 を返しました

perl でこの方法を使用して .tar.bz2 を作成することはできませんか? モジュールを使用したくないが、絶対に必要な場合は使用する

4

1 に答える 1

1

まず第一に、あなたはそれを 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 コマンドの出力と の値を常に確認してください$?システムコマンドのドキュメントには、処理エラーに関する詳細情報が記載されています。

于 2012-11-29T04:35:49.687 に答える