ライブラリ

■ ライブラリを作る

◆ ライブラリを作る

自分で作成したサブルーチンをライブラリファイルとしてまとめることができます。例えば、下記のようなファイルを作成し、lib1.pl というファイル名で保存してください。後述の require が失敗しないように、ライブラリファイルの最後にはおまじないの 1; を記述します。

;#===========================
;# 引数2個の和を求める
;#===========================
sub add {
    local($a, $b) = @_;
    return $a + $b;
}

1;

-P オプションでC言語プリプロセッサ(cpp)により行頭の # が参照されることを考慮して、行頭のコメントは # でなく、;# で記述しておきます。

■ ライブラリを読みこむ(require)

◆ ライブラリを読みこむ

作成したライブラリを読みこむには require を用います。C言語の #include 文、Java の import 文に相当します。require は、読みこんだファイルの末尾の値が偽であれば失敗するため、ライブラリファイルの末尾には 0 以外の値(1;)を記述しておきます。

require "lib1.pl";

$answer = add(5, 3);
print "$answer\n";

実行結果は下記のようになります。

8

■ ライブラリを読みこむパス名を制御する(@INC, PERL5LIB)

◆ ライブラリのサーチパス

ライブラリファイルは、@INC 配列に格納されたフォルダ内にあるものとして検索されます。下記のようにして @INC の内容を確認することができます。

foreach (@INC) {
    print "$_\n";
}

実行結果は次のようになります。

C:/Perl/lib
C:/Perl/site/lib
.

また、環境変数 PERL5LIB にパス名を追加しておくことにより、perl がライブラリファイルを探すパスを増やすことができます。環境変数を設定するには、コマンドラインから以下のように入力します。

◆ Windowsの場合

[コントロールパネル]-[システム] で設定します。コマンドプロンプトで次のように一時的に設定することもできます。

set PERL5LIB=C:/AAA;C:/BBB
◆ UNIX - bsh系の場合
PERL5LIB=/AAA:/BBB
export PERL5LIB
◆ UNIX - csh系の場合
setenv PERL5LIB /AAA:/BBB

■ ライブラリをパッケージとして定義する(package)

◆ 説明

package を用いることにより、そのファイルの末尾、または別の package 文が現れるまでをパッケージとして定義することができます。パッケージ内に定義されたサブルーチンは パッケージ名::サブルーチン または パッケージ名'サブルーチン のように参照します。ライブラリをパッケージとして定義することにより、複数のパッケージ間で変数や関数名が重複してしまうことを回避できるようになります。

lib4.pl
package lib4;

sub add {
    local($a, $b) = @_;
    return $a + $b;
}

1;

このパッケージとその中のサブルーチンを、次のようにして呼び出します。

require "lib4.pl";

$ans = lib4::add(3, 5);
print "$ans\n";

Perl 4 の場合は次のように呼び出します。

require "lib4.pl";

$ans = &lib4'add(3, 5);
print "$ans\n";

Copyright (C) 2002 杜甫々