Perl Language
パッケージとモジュール
サーチ…
構文
- モジュール::名前が必要です。 #@INCの名前で必要とする
- "path / to / file.pm"が必要です。 #@INCからの相対パスで要求する
- Module :: Nameを使用します。 #requireとBEGINのデフォルトインポート
- Module :: Name();を使用します。 #BEGINで必要なインポートとインポートがありません
- Module :: Name(@ARGS)を使用します。 #BEGINでargsを指定してインポートする
- Module :: Name VERSIONを使用します。 #require、version check、BEGINのデフォルトのインポート
- Module :: Name VERSION();を使用してください。 #require、version check、BEGINでのインポートなし
- Module :: Name VERSION(@ARGS)を使用します。 #require、version check、BEGINでargsを使ってインポートする
- "path / to / file.pl"を実行します。 #与えられたファイルを読み込んで評価する
別のファイルの内容を実行する
do './config.pl';
これにより、config.plファイルの内容が読み込まれ、実行されます。 ( perldoc -f doも参照してください。)
注意:ゴルフや何かがエラーチェックされてdoない限りは避けてください。ライブラリモジュールを含めるには、 requireまたはuse 。
実行時にモジュールをロードする
require Exporter;
これにより、 Exporterモジュールがまだインポートされていない場合は、実行時にロードされます。 ( perldoc -f requireも参照してください。)
注意:ほとんどのユーザーはuseモジュールをrequireせずにuseべきrequire 。 useとは異なり、 requireはモジュールのimportメソッドを呼び出さず、コンパイル時ではなく実行時に実行されます。
モジュールをロードするこの方法は、プラグインシステムなど、実行前に必要なモジュールを決めることができない場合に便利です。
package My::Module;
my @plugins = qw( One Two );
foreach my $plugin (@plugins) {
my $module = __PACKAGE__ . "::Plugins::$plugin";
$module =~ s!::!/!g;
require "$module.pm";
}
これは、 My::Package::Plugins::OneとMy::Package::Plugins::Twoをロードしようとします。 @pluginsはもちろん、これを意味するために、いくつかのユーザー入力や設定ファイルから来るべきです。各対のコロンをスラッシュに置き換える置換演算子s!::!/!g注目してください。これは、使い慣れたモジュール名構文をuseて、モジュール名が裸である場合にのみ、モジュールを読み込むことができるからです。文字列または変数を渡す場合は、ファイル名を含める必要があります。
モジュールの使用
use Cwd;
これは、コンパイル時にCwdモジュールをインポートし、デフォルトシンボルをインポートします。つまり、モジュールの変数と関数の一部を使用してコードで使用できるようにします。 ( perldoc -f useも参照してください。)
一般的にこれは正しいことです。ただし、インポートするシンボルを制御したい場合があります。エクスポートするモジュール名の後にシンボルのリストを追加する:
use Cwd 'abs_path';
これを行うと、指定したシンボルのみがインポートされます(つまり、デフォルトのセットはインポートされません)。
複数のシンボルをインポートする場合は、 qw()リスト構築qw()を使用するのがqw()的です。
use Cwd qw(abs_path realpath);
いくつかのモジュールは、シンボルのサブセットをエクスポートしますが、すべてをエクスポートするように指示することができます:all :
use Benchmark ':all';
(すべてのモジュールが:allタグを認識または使用するわけではないことに注意してください)。
ディレクトリ内のモジュールの使用
use lib 'includes';
use MySuperCoolModule;
use lib 'includes';相対ディレクトリincludes/を別のモジュール検索パスとして@INCます。したがってincludes/を含む内部includes/ MySyperCoolModule.pmというモジュールファイルがあるとします。このファイルにはMySyperCoolModule.pmがincludes/います:
package MySuperCoolModule;
必要に応じて、1つのディレクトリ内に自分のモジュールをいくつでもグループ化し、1つのuse libステートメントで見つけることができます。
この時点で、モジュール内のサブルーチンを使用するには、サブルーチン名の前にパッケージ名を付ける必要があります。
MySuperCoolModule::SuperCoolSub_1("Super Cool String");
接頭辞なしでサブルーチンを使用できるようにするには、サブルーチン名を呼び出すプログラムによって認識されるようにサブルーチン名をエクスポートする必要があります。エクスポートは自動的に設定できるため、次のようになります。
package MySuperCoolModule;
use base 'Exporter';
our @EXPORT = ('SuperCoolSub_1', 'SuperCoolSub_2');
モジュールをuseするファイルでuse 、これらのサブルーチンは自動的に使用可能になります。
use MySuperCoolModule;
SuperCoolSub_1("Super Cool String");
または、条件付きでサブルーチンをエクスポートするようにモジュールを設定することもできます。
package MySuperCoolModule;
use base 'Exporter';
our @EXPORT_OK = ('SuperCoolSub_1', 'SuperCoolSub_2');
この場合、モジュールをuseするスクリプトでエクスポートする必要なサブルーチンを明示的に要求する必要があります。
use MySuperCoolModule 'SuperCoolSub_1';
SuperCoolSub_1("Super Cool String");
CPAN.pm
CPAN.pmは、CPANサイトからモジュールを照会してインストールできるPerlモジュールです。
それは、
cpan
または
perl -MCPAN -e shell
モジュールのクエリ
名前で:
cpan> m MooseX::YAML
モジュール名に対する正規表現:
cpan> m /^XML::/
注意:ページャーを有効にするか、ファイルにリダイレクトするには|または>シェルのリダイレクト(スペースは|と>周りに必須です)。例: m /^XML::/ | less 。
流通によって:
cpan> d LMC/Net-Squid-Auth-Engine-0.04.tar.gz
モジュールのインストール
名前で:
cpan> install MooseX::YAML
流通によって:
cpan> install LMC/Net-Squid-Auth-Engine-0.04.tar.gz
インストールされているすべてのモジュールのリスト
コマンドラインから:
cpan -l
Perlスクリプトから:
use ExtUtils::Installed;
my $inst = ExtUtils::Installed->new();
my @modules = $inst->modules();