私はユーザー入力を受け取り、後で実行される別のスクリプトを作成するPerlスクリプトを持っています。私は現在、これらのスクリプトのテストを行っており、実行したいテストの1つは、生成されたスクリプトが正常にコンパイルされているかどうかを確認することです(例:perl -c <script>
)。別のPerlプロセスを起動する必要はありませんか?私は答えを探してみましたが、検索はPerlスクリプトのコンパイルに関する情報を実行可能プログラムに変換するだけです。実行中のPerlセッション内でPerlスクリプトをコンパイルするにはどうすればよいですか?
答えて
eval
機能を使用、動的に生成されたコードを実行するには:あなただけの構文をコンパイルするか確認したい場合は、あなたが同じPerlのセッション内でそれを行うことができなくなりますただし
my $script = join /\n/, <main::DATA>;
eval($script); # 3
__DATA__
my $a = 1;
my $b = 2;
print $a+$b, "\n";
を。
機能syntax_ok
ライブラリTest::Strictperl -c
を外部のPerlインタプリタで実行して構文チェックを実行するので、内部的な方法はないと仮定します。
のみ動作し、あなたの周りのために働くことがあり、次のようになります。
my $script = join /\n/, <main::DATA>;
eval('return;' . $script);
warn [email protected] if [email protected]; # syntax error at (eval 1) line 3, near "1
# my "
__DATA__
my $a = 1
my $b = 2;
print $a+$b, "\n";
このケースでは、しかし、コードの最初の行ので、[email protected]
を使用してコンパイルエラー(複数可)をチェックすることができるようになりますreturn;
の場合、実行されません。
注:参考になっチャットやコードの修正のため、ユーザーmobに感謝します。
スクリプトのコンパイルには多くの副作用があります。これにより、サブシステムが定義されます。モジュールが実行されます。何かがコンパイルされているかどうかをテストしたいだけなら、はを別のインタプリタにします。これは、1つのスクリプトをテストしても後のテストで誤検出や偽陰性が発生しないことを確認する唯一の方法です。
私のポイントを明確にするために最後の文を追加しました。 – ikegami
この作品のようなものはありませんか?
open(FILE,"perl -c generated_script.pl 2>&1 |");
@output=<FILE>;
if(join('',@output)=~/syntax OK/)
{
printf("No Problem\n");
}
close(FILE);
ではなく、バックティックを使用しない理由がありますか? –
私はあなたを愛しています!どうもありがとうございます。この特殊な配管ソリューションは、私の特定のケースで本当に助けになりました! – gideon
Test::Compile
モジュール、特にpl_file_ok()
関数を参照してください。
- 1. あるPerlスクリプトから別のPerlスクリプトに引数を渡すにはどうすればよいですか?
- 2. perlスクリプト内でperlスクリプトを実行したい
- 3. IISでPerlスクリプトの実行時間を制限するにはどうすればよいですか?
- 4. 大量のperlスクリプトを自動的に実行するにはどうすればよいですか?
- 5. ログオフ後、Unix上でPerlスクリプトを実行するにはどうすればよいですか?
- 6. LinuxでシステムデーモンとしてPerlスクリプトを実行するにはどうすればよいですか?
- 7. JavaプログラムからPerlスクリプトを実行するにはどうすればよいですか?
- 8. 実行中のPerlプロセスにデバッガを接続するにはどうすればよいですか?
- 9. Ant execタスクを使用してPerlスクリプトを実行するにはどうすればよいですか?
- 10. cgi/perlスクリプトが実行されないようにする
- 11. 実行中のperl/pythonスクリプトが実行している現在のステップを見つけるにはどうすればよいですか?
- 12. PythonスクリプトでPerlスクリプトの結果を取得するにはどうすればよいですか?
- 13. perlでpythonスクリプトを実行する
- 14. Windowsでperlスクリプトを実行する
- 15. 実行可能ファイルにperlスクリプトをコンパイルする際の問題
- 16. IntelliJ Ideaの中でPerlスクリプトを実行する
- 17. jQueryブラーイベントを使用してPerlスクリプトにAJAX要求を行うにはどうすればよいですか?
- 18. PerlスクリプトがWindows上で実行されているかどうかを確認するにはどうすればよいですか?
- 19. Windows上でXAMPP上でPerlファイルを実行するにはどうすればよいですか?
- 20. Perlでシステムコマンドを非同期で実行するにはどうすればよいですか?
- 21. perl 6でスタンドアロンの実行可能ファイルを作成するにはどうすればよいですか?
- 22. Perl 5.004でPerl/TK GUIの外観を改善するにはどうすればよいですか?
- 23. PerlはPHPとセッションをどのように扱いますか?
- 24. TextMateの内部でproveフォーム用に設計されたテスト用のperlスクリプトを実行するにはどうすればよいですか?
- 25. EPICを使用してEclipseでPerlテストケースを実行するにはどうすればよいですか?
- 26. Perlで小数点演算を実行するにはどうすればよいですか?
- 27. Perlを使ってファイル内の行を比較するにはどうすればよいですか?
- 28. Perlを使用してファイル内の行を更新するにはどうすればよいですか?
- 29. PerlでCSSを検索するにはどうすればよいですか?
- 30. Perlスクリプトでスウェーデンのタイムゾーンに日付を変更するにはどうすればよいですか?
"コンパイル"とはどういう意味ですか?エラーをチェックしますか?それとも実行しますか? –
@ user1215106エラーを確認し、実際には実行しないでください。後で実行するときに構文エラーが原因でスクリプトが失敗しないようにしたい。 – Joel
スクリプトでコードを動的に作成しますか? –