Perlのパッケージとモジュール
Perlの各パッケージには、個別のシンボルテーブル定義構文は次のとおりですがあります。
package mypack;
それは、これまで別のステートメントに遭遇するまでこの文は、パッケージに関連付けられたシンボルテーブルに格納されている以下、定義されているすべての変数とサブルーチンの名前でパッケージをMYPACKというパッケージを定義します。
各シンボルテーブルには変数、サブルーチンの独自のセットを持って、各グループ名は関係ありませんので、あなたは別の変数を表す異なるパッケージで同じ変数名を使用することができます。
別のパッケージ変数に一つのパッケージからのアクセスには、「パッケージ名+ダブルコロン(::) +変数名 "を指定することができますアプローチを。
パッケージに関連付けられて格納する変数やサブルーチン名、デフォルトのシンボルテーブルには、メイン・リンクと呼ばれています。デフォルトのシンボルテーブルを使用してに戻したいときは、他のパッケージで定義された手順は、あなたがメインパッケージを再割り当てすることができる場合:package main;
通常のストレージとしてパッケージ、変数やサブルーチン名を定義したことがないかのようにこのようにして、次のプログラム。
次のサンプルファイルは、メインとFooのパッケージを持っています。__PACKAGE__出力パッケージ名のための特別な変数:
#!/usr/bin/perl # main 包 $i = 1; print "包名 : " , __PACKAGE__ , " $i\n"; package Foo; # Foo 包 $i = 10; print "包名 : " , __PACKAGE__ , " $i\n"; package main; # 重新指定 main 包 $i = 100; print "包名 : " , __PACKAGE__ , " $i\n"; print "包名: " , __PACKAGE__ , " $Foo::i\n"; 1;
上記のプログラムは、出力は次のようになります。
包名 : main 1 包名 : Foo 10 包名 : main 100 包名: main 10
BEGINとENDモジュール
、ENDをBEGIN:Perl言語は二つのキーワードが用意されています。 彼らは、実行後、プログラムの実行や体の前に実行されるスクリプトの別個のセットすることができます。
構文は次のとおりです。
BEGIN { ... } END { ... } BEGIN { ... } END { ... }
各ブロックのBEGINが、Perlスクリプトがロードされ、コンパイル後に実行される他の文の前に実行されます。
インタプリタが終了する前に実行されたステートメントの各ENDブロック。
あなたはPerlモジュールを作成するときにBEGINとENDブロックは、特に有用です。
あなたは大きな理解していない場合、我々は、インスタンスを参照することができます:
#!/usr/bin/perl package Foo; print "Begin 和 Block 实例\n"; BEGIN { print "这是 BEGIN 语句块\n" } END { print "这是 END 语句块\n" } 1;
上記のプログラムは、出力は次のようになります。
这是 BEGIN 语句块 Begin 和 Block 实例 这是 END 语句块
Perlモジュールとは何ですか?
Perlのモジュールを作成するパッケージとのPerl5。
Perlモジュールは、再利用可能なパッケージ、モジュール名と同じパッケージ名、.PMのために定義されたファイルの拡張子です。
次のように我々は、モジュールFoo.pm、コードを定義下:
#!/usr/bin/perl package Foo; sub bar { print "Hello $_[0]\n" } sub blat { print "World $_[0]\n" } 1;
次の点に注意してくださいすることについてのPerlモジュール:
機能と使用は 、ロード・モジュールが必要になります。
@INC Perlはあるライブラリルーチンの場所へのディレクトリパスを含む特別な組み込みの配列です。
関数がコードを実行するためにeval関数を呼び出す必要とし、使用します。
1 END;実行は、これは必見です、TRUEを返し、そうでない場合はエラーを返します。
使用と機能を必要とします
次のようにモジュールが必要と関数によって呼び出すことができます。
#!/usr/bin/perl require Foo; Foo::bar( "a" ); Foo::blat( "b" );
また、を参照するために関数を使用することができます。
<pre> #!/usr/bin/perl use Foo; bar( "a" ); blat( "b" );
我々は、パッケージ名指定された関数への参照を必要とする必要性を確認し、使用する必要はありません、2つの主な違いは、次のとおりです。
- 1は、(の.pmの接尾辞を省略することができるが、そこ.PL必要があります)perlのモジュールやプログラムをロードするために必要
- 2は、Perlのuse文が導入されたとき、ランタイムが導入されている必要がコンパイルされています
- 3、Perlはモジュールの導入だけでなく、サブモジュールのモジュールの導入を使用します。 そして、それは再声明への導入を必要とすることはできません
- モジュールがUSEと@INCが導入されていない言葉ではありませんが、指定されたパスを必要とするかもしれない一度4、USEは、内部の現在のデフォルト@INCを見ることです
- 5、USE参照モジュールは、モジュール名が含まれている場合は::ダブルコロンを、コロンは、パス区切り、Unixのと同等として/またはWindows \の下に倍になります。 以下のような:
use MyDirectory::MyModule
あなたはモジュールを使用するには、次のステートメントを追加することにより、モジュールからのシンボルのリストをエクスポートすることができます。
require Exporter; @ISA = qw(Exporter);
@EXPORT配列は、名前に由来し、デフォルトの変数と関数が含まれています。
package Module; require Exporter; @ISA = qw(Exporter); @EXPORT = qw(bar blat); # 默认导出的符号 sub bar { print "Hello $_[0]\n" } sub blat { print "World $_[0]\n" } sub splat { print "Not $_[0]\n" } # Not exported! 1;
Perlモジュールを作成します。
あなたは簡単にPerl配布がツールh2xsに付属しているPerlモジュールを作成することができます。
あなたはh2xsは、そのパラメータリストを見て、コマンドラインモードで入力することができます。
h2xs構文:
$ h2xs -AX -n ModuleName
パラメータ説明:
-A無視された自動ロードメカニズム
-X無視さXS要素
-nは、拡張子名を指定します。
たとえば、あなたのモジュールPerson.pmファイル場合は、次のコマンドを使用します。
$ h2xs -AX -n Person
上記のプログラムの出力は以下となります。
Writing Person/lib/Person.pm Writing Person/Makefile.PL Writing Person/README Writing Person/t/Person.t Writing Person/Changes Writing Person/MANIFEST
あなたが新しく追加されたディレクトリとファイルの説明を見ることができるディレクトリの下に人:
README:このファイルは、というように、インストール、モジュールの依存関係、著作権情報などの情報が含まれています。
プロジェクト(変更履歴)ファイルとしてこの変更ログファイル:変更。
Makefile.PL:これは標準のPerlのMakefileビルダーです。 モジュールをコンパイルするMakefile.PLファイルを作成するために使用します。
MANIFEST:このファイルは自動的にモジュールのバージョン分布のtar.gz形式の種類を構築するために使用されます。 だから、他の人に公開または分散を取得するためにあなたのCPANモジュールを置くことができます。 これは、このプロジェクトのすべてのファイルのリストが含まれています。
Person.pm:これはあなたのmod_perlハンドラ(ハンドラコード)のためのコードが含まれているメインモジュールファイルです。
Person.t:このモジュールのいくつかのテストスクリプト。 デフォルトでは、それだけでモジュールがロードチェックだ、あなたはいくつかの新しいテスト・ユニットを追加することができます。
トン/:テストファイル
LIB /:実際のソース格納ディレクトリ
あなたはPerson.tar.gzとしてパッケージ上のディレクトリにタール(Linuxの場合)コマンドを使用することができます。
Perlモジュールをインストールします。
私達はちょうどPerson.tar.gzは、次の手順を実行し、インストールを解凍するファイルを圧縮することができます。
tar xvfz Person.tar.gz cd Person perl Makefile.PL make make install
Makefileを生成し、現在のディレクトリ内の最初の実行 "のperl Makefile.PL";
そして、必要なライブラリファイルをコンパイルして作成するために "make"を実行します。
テスト結果が正しいコンパイル "のテストを行う」に続いて、最後に実行され、従って全体のコンパイルプロセスを終了、システムディレクトリにライブラリファイルをインストールするには、" make install "を。