9

別のスクリプトを呼び出すperlスクリプトがあります。私はバックティックを使用してそれを呼び出し、そのスクリプトに引数を渡していますが、正常に機能します。

`CQPerl call_script.pl $agr1 $agr2 $arg3`;

しかし、そうするための別のより良い方法があるかどうかを提案してください。呼び出し元のスクリプトまたは呼び出されたスクリプトが原因でスクリプトがエラーになったかどうかを確認するにはどうすればよいですか。呼び出し元のスクリプト自体からそのチェックを行うにはどうすればよいですか?

4

2 に答える 2

23

エラーチェックを行いたくない場合は、バックティックが間違ったアプローチである可能性があります。この関数を使用することをお勧めしますsystem。エラー処理の詳細については、ドキュメントを参照してください。例も含まれています。

Perlには、他のスクリプト/コマンドを実行するためのいくつかの可能性があります。

  • backticks/qx{}プログラム終了後にすべての出力を一度に読み取りたい場合
  • exec別のプログラムとしてプロセスを続行したくない場合—成功した場合は決して戻りません
  • systemコマンドの成功または失敗のみに関心がある場合
  • openコマンドとの間で情報をパイプする場合
  • dorequireここで別のPerlスクリプトを実行します。Cに似ています#include
  • 、および実行したプログラムにopenアクセスできるように、3方向に実行するモジュールがあります。詳細については、perlipcの適切な部分を参照してください。STDINSTDOUTSTDERR

また、シェルのエスケープを回避するために、これらの呼び出しの複数引数形式を常に使用してください(煩わしく、非常に安全でない可能性があります)。

于 2012-08-21T00:16:45.733 に答える
5

perl特殊変数の値をチェックして$?、エラーが発生したかどうかを判別してください。

于 2012-08-21T00:10:44.093 に答える