7

シェルで直接実行したいスクリプトにのみシバン行を含める必要があることを認識しています。また、ローカルにインストールした大きなモジュール パッケージのいずれにも、シバン行が含まれていません。

しかし、私がまだ気づいていない他の理由で人々がそれを含める可能性があるかどうか、私はまだ興味がありました. または、おそらくそれを含めるための(たとえば)〜「歴史的」な理由のようなものがあるかもしれません。それとも、私の家が爆発するのを恐れて、.pm ファイル (ピリオド) にシバン行を含めてはいけませんか?

4

2 に答える 2

7

いいえ。シバンはファイルを実行可能としてマークし、モジュールは通常実行可能ではありません。

一般に、例外があります。Python には、現在のファイルがインタープリターによって呼び出されたものであるかどうかを検出するイディオムがあり、かなりの数のモジュールがこれを使用して、スタンドアロンで呼び出されたときに単体テストを実行します。これは、CPAN のモジュールに追加の単体テスト ファイルがバンドルされている Perl コミュニティでは一般的ではありません。

したがって、この例外の可能性を念頭に置いても、直接実行することを意図していないモジュールファイルにシバンを含めるのは良いスタイルだとは思いません。

于 2012-09-24T12:48:54.403 に答える
4

簡単な答えは NO ですが、正解も不正解もありません。

シバンの目的は、インタープリターがどこにいるかを OS に知らせることです。Perl ファイル (スクリプトまたはモジュール) に追加する必要はありません。そして、Windows ではとにかく無視されます**。

より具体的には、ほとんどの場合、そのモジュールを直接実行したい何らかの理由がない限り、モジュールに追加する理由はありません。とにかく、Perl モジュールは実際には単なる Perl スクリプトであり、先頭に「package」コマンドがあります。

いずれにせよ、あっても問題はありませんが、ほとんどの場合、意味がありません。

** Perl の起動方法に関係なく、常にコマンド ライン スイッチのシバンを調べます。これは、OS がシバン行を検索しない Windows にも当てはまりますが、Perl がファイルをスキャンすると検索されます。http://perldoc.perl.org/perlrun.htmlを参照してください。

于 2012-09-24T12:54:21.723 に答える