Perlでコードを整理するためにモジュール(パッケージ)を使用し、これらは.pm拡張子の別ファイルに格納されます。
use(コンパイル時)およびrequire(実行時)を使用します。@INCを使用します。この配列は、Perlがモジュールを探すディレクトリのリストです。モジュールの例:
Foo.pm
package Foo; use strict; use warnings; sub say_hello { print "Hello from Foo! "; } 1;
接続と使用:
use lib '.'; # 現在のフォルダーを@INCに追加 use Foo; Foo::say_hello(); # 出力: Hello from Foo!
主な違い:
useはスクリプトの実行開始時にモジュールをインポートし、自動的にimportメソッドを呼び出します(通常はモジュール用)。requireは最初の呼び出し時にのみモジュールを読み込みます。useとrequireの違いは何ですか?いつどの演算子を使用するべきですか?
回答:
use— コンパイル時に作用し、自動的にimportを呼び出します(通常はモジュール用)。require— 実行時に作用し、モジュール名が実行時まで不明な場合や、常に接続する必要がない場合に必要です。
物語
大規模プロジェクトで独自のライブラリを
requireを通じて接続したが、エクスポートされた関数を使用することを忘れた。使用された関数はエクスポートされなかった、なぜならrequireはimportを呼び出さなかったから。結果 — シンボルのインポートが機能せず、関数を明示的に呼び出さなければならなかった。
物語
モジュールを別のフォルダーに移動する際、
use libを通じてフォルダーへのパスを追加するか、@INC変数を変更するのを忘れた。モジュールが見つからず、スクリプトはエラーで終了した。ファイルはプロジェクトに対して正しい場所にあったにもかかわらず。
物語
古いアプリケーションでモジュールを小文字で命名し、大文字で接続した:
use foo;ではなくuse Foo;。Perlはモジュールを見つけられず、アプリケーションの重要部分の機能が損なわれた。