いくつかのPerlスクリプトの回帰システム(ではなく、ユニットテスト)を構築しています。テストスイートからPerlプログラムをコンパイルする方法をテストできますか?
システムのコアコンポーネントは
`perl script.pl @params 1>stdoutfile 2>stderrfile`;
しかし、実際にスクリプトに取り組んでの過程で、彼らは時々(ショック!)をコンパイルしないでくださいされています。しかしperl自体が正しく実行されます。しかし、私は、Perlがコンパイルに失敗した(したがってstderrに書き込んだ)のか、スクリプトが入力にバーコード化された(したがってstderrに書き込んだ)のかどうかをstderrで検出する方法を知らない。
Perlエラーメッセージを徹底的に見つけずに、stderrファイルをグリッピングすることなく、プログラムが実行されたかどうかを検出するにはどうすればよいですか?
あなたは常に$^Xを使うべきです。私はそれを使用したたびに、ハードコードされた 'perl'に噛まれてしまいました。問題は、子プロセスがPERL5LIBを継承していることです。これは、PATHの最初のperlで間違っている可能性があります。あなたは奇妙なライブラリの不一致のエラーで終わるでしょう。 –
Heh。それは醜いです。それは必ずしも問題ではありませんが(WindowsユーザーはPerlの複数のバージョンをインストールすることはほとんどありません)、$^Xを使用することは決して有害ではありません。私はそれに応じて答えを更新します。 –
@Michael Carman Ah-em ...私はCygwin、Strawberry、ActiveState Perlだけでなく、VC Expressを使って最初からコンパイルしたものもあります。 –