サーチ…


構文

  • モジュール::名前が必要です。 #@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べきrequireuseとは異なり、 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::OneMy::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.pmincludes/います:

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();


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow