私は私のためにいくつかのデータを処理する同僚から継承したPerlスクリプトを持っています。以前のサーバーでは、予想されるいくつかのエラーメッセージを実行して返し、出力ファイルを生成しました。それは私のニーズにうまく機能します。しかし、最近別の編集作業をせずに古いサーバーから大きな新しいグループサーバーに移動しましたが、これは続行するのではなく、最初のエラーの後に終了するようです。これ以上エラーは発生せず、出力ファイルは生成されません。
エラーにもかかわらず、このスクリプトが常に実行されるようにするにはどうすればよいですか?私はPerlコード自体ではなく、サーバー/ Unixレベルでこの問題を解決しようとしています。なぜなら、このスクリプトはすでに他のサーバーでうまく機能しているからです。
追加の詳細:
以前のサーバーではPerl 5.26.1を使用していました。新しいサーバーではPerl 5.26.1がインストールされていませんが、Perl 5.16、5.22.1、5.28.0で同じエラーが発生したため、Perlのバージョンに関する質問ではないようです。
「set + e」を試してみましたが、役に立ちませんでした。
終了ステータスは255として返されます。これは、終了状態が範囲外であることを意味します。現時点では、そのサーバーにアクセスできないため、以前のサーバーでどのシャットダウン状態が提供されているのかわかりません。
新しいサーバーはunivaグリッドエンジンを使用してジョブをキューに追加しましたが、ログインノードでスクリプトを実行してみましたが、同じ問題が発生したため、これはUGE固有の問題ではないようです.
答え1
次のコマンドを使用して、Perlスクリプトを1行ずつデバッグできます。
perl -d script.pl
次のようにメッセージが表示されます。
DB<1>
スクリプトの終わりに達するまで「n」と入力し続けます。スクリプトでエラーが発生する場所を確認し、それに応じてスクリプトの問題を解決できます。