名前空間またはパッケージは同じですか? パッケージしかないPerlを使用しています。モジュールを含む他のプログラミング言語があることは知っています。
違いは何ですか?
package
ディレクティブは名前空間を設定します。そのため、名前空間はパッケージとも呼ばれます。
Perl にはモジュールの正式な定義がありません。さまざまな違いがありますが、以下は大部分のモジュールに当てはまります。
.pm
。package
このファイルには、コード全体をカバーする単一の宣言が含まれています。(ただし、以下を参照してください。)package
ます。.pm
複数のパッケージを含むファイルに遭遇することは珍しくありません。それが単一のモジュールであるか、複数のモジュールであるか、またはその両方であるかは議論の余地があります。
Namespace
別個の一連の識別子のコンテナを意味する一般的なコンピューティング用語です。同じ識別子が異なる名前空間に独立して表示され、異なるオブジェクトを参照できます。オブジェクトを明確に識別する完全修飾識別子は、名前空間と識別子で構成されます。
package
Perl は、キーワードを使用して名前空間を実装します。
Perlモジュールはまったく別のものです。use
これは、キーワードを使用して任意のプログラムに組み込むことができる Perl コードの一部です。ファイル名は.pm
- for Perl Module - で終わる必要があり、含まれるコードにはpackage
、パスを含むファイルの名前と同等のパッケージ名を使用するステートメントが含まれている必要があります。たとえば、 というファイルに記述されたモジュールには、 のようなステートメントがMy/Useful/Module.pm
必要です。package
package My::Useful::Module
あなたが考えていたのは、これも一般的なコンピューティング用語であり、今回はオブジェクト指向データのタイプを意味するクラスです。Perl はそのパッケージをクラス名として使用し、オブジェクト指向モジュールにはコンストラクターサブルーチン (通常は呼び出される)があり、オブジェクト指向の方法で動作させるために使用new
されたデータへの参照を返します。blessed
すべての Perl モジュールがオブジェクト指向モジュールであるとは限りません。サブルーチンの単純なライブラリである場合もあります。