自分で作成したサブルーチンをライブラリファイルとしてまとめることができます。例えば、下記のようなファイルを作成し、lib1.pl というファイル名で保存してください。後述の require が失敗しないように、ライブラリファイルの最後にはおまじないの 1; を記述します。
;#=========================== ;# 引数2個の和を求める ;#=========================== sub add { local($a, $b) = @_; return $a + $b; } 1;
-P オプションでC言語プリプロセッサ(cpp)により行頭の # が参照されることを考慮して、行頭のコメントは # でなく、;# で記述しておきます。
作成したライブラリを読みこむには require を用います。C言語の #include 文、Java の import 文に相当します。require は、読みこんだファイルの末尾の値が偽であれば失敗するため、ライブラリファイルの末尾には 0 以外の値(1;)を記述しておきます。
require "lib1.pl"; $answer = add(5, 3); print "$answer\n";
実行結果は下記のようになります。
8
ライブラリファイルは、@INC 配列に格納されたフォルダ内にあるものとして検索されます。下記のようにして @INC の内容を確認することができます。
foreach (@INC) { print "$_\n"; }
実行結果は次のようになります。
C:/Perl/lib C:/Perl/site/lib .
また、環境変数 PERL5LIB にパス名を追加しておくことにより、perl がライブラリファイルを探すパスを増やすことができます。環境変数を設定するには、コマンドラインから以下のように入力します。
[コントロールパネル]-[システム] で設定します。コマンドプロンプトで次のように一時的に設定することもできます。
set PERL5LIB=C:/AAA;C:/BBB
PERL5LIB=/AAA:/BBB export PERL5LIB
setenv PERL5LIB /AAA:/BBB
package を用いることにより、そのファイルの末尾、または別の package 文が現れるまでをパッケージとして定義することができます。パッケージ内に定義されたサブルーチンは パッケージ名::サブルーチン または パッケージ名'サブルーチン のように参照します。ライブラリをパッケージとして定義することにより、複数のパッケージ間で変数や関数名が重複してしまうことを回避できるようになります。
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";