JavaのRuntime.exec()を使用してPerlインタープリターのコピーを実行しようとしています。ただし、エラーコードが返されまし9た。ファイルを数回実行した後、perlインタプリタは不思議なことに、コマンドをまったく変更せずにコード253を返し始めました。
コード253/コードとは9どういう意味ですか?perl通訳者の終了コードをGoogleで検索しても、何も見つかりませんでした。Perlインタープリターの終了コードのリストはどこにありますか?
perldoc perlrunを参照してください:
プログラムが構文的に正しい場合、それは実行されます。
exit()プログラムがor演算子を押さずに最後から実行された場合、正常に完了したことを示すためにdie()暗黙的に提供されます。exit(0)
したがって、実行しているプログラムは、 die、exit、または同等のものを介してこれらの終了値を何らかの形で指定している必要があります。
スクリプトが実行されない場合、 perlインタープリターは実際には独自の終了コードを返します。ほとんどの構文エラーは、終了コード9につながります。
不明な機能/許可されていないベアワード:
perl -e 'use strict; print scalar(localtime); schei;'
$?= 9
ゼロ除算:
perl -e 'use strict; print scalar(localtime); my $s = 1/0;'
$?= 9
構文エラー:
perl -e 'use strict; print scalar(localtime); my $ff; $ff(5;'
$?= 9
ダイの使用:
perl -e 'use strict; print scalar(localtime); die "twaeng!"'
$?= 9
未知のモジュールは、perlが別の方法で終了することを私が見つけた唯一の状況でした:
perl -e 'use strict; use doof; print scalar(localtime);'
$?= 2
ところで、私はまだperlインタープリターの終了コードの包括的なリストを自分で探しています。perlインタプリタのソース以外に、どこを見ればよいか考えた人はいますか?
通常の状況でperlは、実行するプログラムが返すものは何でも返します。したがって、実行中のプログラムを知らなければ、戻り値の意味を一般化することはできません。
Perl自体には定義された終了コードはありません。perlインタープリターが本当に恐ろしい方法でクラッシュしない限り、終了コードは、それ自体perlではなく、実行中のプログラムによって決定されperlます。
いくつかの実行後にエラーコードが変更されたため、アプリを継続的に実行しているウェブアプリとして実行している場合はJava、何らかのメモリリークの可能性があるかどうかを確認してください。
perlスクリプトをperlインタープリターのオプションを指定して実行することにより、さまざまな問題からスクリプトをテストできます。-Tw汚染されたモードと警告が有効になっている場合、これらの詳細についてはperlrunを参照してください。