ライブラリとモジュール

  1. ライブラリとモジュール


    1. 概要

      汎用性のあるサブルーティンを集めて一つのファイルにしておき、それを組み込むことができます。ライブラリとモジュールの2種の方法があります。

    2. ライブラリ

      ライブラリファイルの構造は通常のスクリプトと同じですが、最後の行に、 1; を付けます。これは、真値を返すことを意味します。ライブラリファイルには通常 .pl の拡張子を使います。ライブラリを組み込みには、関数
       require ("<ライブラリファイル>");
      を利用します。

    3. 一つの関数をもつ簡単なライブラリの例を紹介します。

      #simple library
      #msg.pl
      
      sub println{
       my($msg)=shift;
       print "msg:$msg\n";
       }
      
      1;

      このライブラリを利用する例を紹介します。require はライブラリファイルを指定します。ライブラリが別のフォルダに存在する場合、ファイルへのパスを指定します。
      #
      require ("msg.pl");
      {
        &println("hello");
      }

    4. モジュール

      モジュールはライブラリを拡張したもので、引数をとることができます。モジュールは通常、拡張子 .pm を使います。モジュールは、次の use で組み込みます。
       use <モジュール名>
       use <> (<引数リスト>)
      ライブラリやモジュールでは、BEGIN と END の名前をもつ特殊な関数を定義できます。これは、明示的に呼び出さなくても、モジュール(ライブラリ)の組み込んだ スクリプトが実行を開始する前と、終了した自動的に呼び出されます。 言語Cのクラスコンストラクタに似た機能ですね。
       use では、モジュールファイルのパスを指定できません。実行するスクリプトのフォルダか、Perlの標準フォルダの内部に配置する必要があります。サブディレクトリに配置した場合、
       use <サブディレクトリ名>::<モジュール名>
      で指定をします。

  2. パッケージ

    1. パッケージ

      パッケージは、名前空間を定義します。同じ名前が メインスクリプトとモジュールで定義された場合、メインスクリプトの名前が優先されます。モジュールの名前を有効にしたい場合、
       package <パッケージ名>
      を宣言します。package 宣言うぃすれば、以後定義された名前は
       <パッケージ名>::<名前>
      で利用できます。変数の場合
       $package-name::variable
      となります。