Perl-packages-modules
Perl-パッケージとモジュール
パッケージとは何ですか?
- パッケージは、独自の名前空間に存在するコードのコレクションです。
- 名前空間は、一意の変数名の名前付きコレクションです(シンボルテーブルとも呼ばれます)。
- 名前空間は、パッケージ間の変数名の衝突を防ぎます。
- パッケージを使用すると、モジュールの構築が可能になります。使用すると、モジュールの名前空間外の変数や関数が上書きされなくなります。
- パッケージは、別のパッケージステートメントが呼び出されるまで、または現在のブロックまたはファイルの終わりまで有効です。
- :: パッケージ修飾子を使用して、パッケージ内の変数を明示的に参照できます。
次に、ファイルにmainパッケージとFooパッケージがある例を示します。 ここでは、パッケージ名の出力に特殊変数PACKAGEが使用されています。
上記のコードが実行されると、次の結果が生成されます-
BEGINブロックとENDブロック
BEGINおよびENDという名前のコードブロックをいくつでも定義できます。これらは、それぞれコンストラクターおよびデストラクタとして機能します。
- perlスクリプトがロードされコンパイルされた後、他のステートメントが実行される前に、すべての BEGIN ブロックが実行されます。
- すべてのENDブロックは、perlインタープリターが終了する直前に実行されます。
- BEGINブロックとENDブロックは、Perlモジュールを作成するときに特に役立ちます。
次の例は、その使用法を示しています-
上記のコードが実行されると、次の結果が生成されます-
Perlモジュールとは何ですか?
Perlモジュールは、拡張子が.pmのパッケージの名前と同じ名前のライブラリファイルで定義された再利用可能なパッケージです。
Perlモジュールに関するいくつかの重要なポイント
- 関数 require および use はモジュールをロードします。
- どちらも、モジュールを見つけるために @ INC の検索パスのリストを使用します。
- どちらの関数も require と use は eval 関数を呼び出してコードを処理します。
- 下部の 1; により、evalはTRUEと評価されます(したがって失敗しません)。
Require関数
モジュールは、次のように require 関数を呼び出すことでロードできます-
サブルーチン名を呼び出すには、サブルーチン名が完全修飾されている必要があることに注意してください。 Foo ::修飾子を使用する必要がないように、サブルーチン bar および blat を独自のネームスペースにインポートできるようにすると便利です。
使用機能
モジュールは、 use 関数を呼び出すことでロードできます。
パッケージの関数名を完全に修飾する必要がないことに注意してください。 use 関数は、モジュール内にいくつかのステートメントが追加されると、モジュールからシンボルのリストをエクスポートします。
次に、 @ EXPORT という名前のリスト変数を入力して、シンボルのリスト(スカラー、リスト、ハッシュ、サブルーチンなど)を提供します。
Perlモジュールツリーを作成する
Perlモジュールを出荷する準備ができたら、Perlモジュールツリーを作成する標準的な方法があります。 これは、 h2xs ユーティリティを使用して行われます。 このユーティリティはPerlに付属しています。 ここにh2xsを使用する構文があります-
たとえば、モジュールが Person.pm ファイルで使用可能な場合、次のコマンドを発行するだけです-
これは、次の結果を生成します-
ここにこれらのオプションの説明があります-
- -A はオートローダーコードを省略します(頻繁に使用されない多数のサブルーチンを定義するモジュールで最適に使用されます)。
- -X はXS要素を省略します(eXternal Subroutine、eXternalはPerlの外部、つまりCを意味します)。
- -n はモジュールの名前を指定します。
したがって、上記のコマンドはPersonディレクトリ内に次の構造を作成します。 実際の結果は上に示されています。
- 変更点
- Makefile.PL
- MANIFEST(パッケージ内のすべてのファイルのリストが含まれています)
- README
- t/(テストファイル)
- lib/(実際のソースコードはここにあります
最後に、このディレクトリ構造を* Person.tar.gzファイルに tar すると、出荷できます。 適切な手順でREADMEファイルを更新する必要があります。 tディレクトリにいくつかのテスト例ファイルを提供することもできます。
Perlモジュールのインストール
tar.gzファイルの形式でPerlモジュールをダウンロードします。 次のシーケンスを使用して、 Person.tar.gz ファイルとしてダウンロードされたPerlモジュール Person.pm をインストールします。
Perlインタープリターには、モジュールを検索するディレクトリーのリストがあります(グローバル配列@INC)。