1. ホーム
  2. perl

[解決済み] Perlスクリプトにコンパイルエラーがないことを確認する方法は?

2022-02-18 09:51:54

質問

Bashスクリプトの中で多くのPerlスクリプトを呼び出しています(cshからも呼び出すことがあります)。

Bashスクリプトの最初に、すべてのPerlスクリプトにコンパイルエラーがないかどうかをチェックするテストを置きたいと思います。

これを実現する一つの方法は、Bashスクリプトから実際にPerlスクリプトを呼び出すことである。 grep しかし、Perlスクリプトがコード内の異なる位置で呼び出されるため、この処理は面倒になります。

Perl スクリプトにコンパイルエラーがないかどうか確認する方法はありますか?

どのように解決するのですか?

ご注意ください!

Perlプログラムのコンパイルエラーを確認するために以下のコマンドを使用すると、危険な場合があります。

$ perl -c yourperlprogram

このトピックについては、Randalが非常に素晴らしい記事を書いているので、ぜひご覧ください。

彼の記事から引用します。

おそらく、最もシンプルに判断できるのは、「有効かどうか」でしょう。これには perlを起動し、compile-onlyスイッチを渡します。

perl -c ourprogram

この操作のために、perlはプログラムをコンパイルします。 が、実行段階の手前で止まっています。つまり、すべての プログラムテキストの一部は、内部データ の構造体であり、作業プログラムである。 を実行します。もし構文エラーがあれば、その旨が表示され を実行すると、コンパイルが中断される。

実は、これはちょっとウソなんです。BEGINブロック(を含む)のおかげで そのレイヤーオンの従兄弟である use ディレクティブ)、いくつかの Perl コードは は、この理論的には安全な "シンタックスチェック" の間に実行されました。例えば 例えば、あなたのコードに

BEGIN { warn "Hello, world!\n" } 

というメッセージが表示されます。 perl -c のときでさえも! これは、次のような人々にとってやや驚くべきことです。 というのは、quot;コンパイルのみ"は、quot;コードを実行しない"という意味だと考えているからです。例えば を含むコードです。

BEGIN { system "rm", "-rf", "/" } 

の問題点がわかると思います。 という引数があります。おっとっと。