sironekotoroの日記

Perl で楽をしたい

すぐわかる オブジェクト指向 Perl 第8章 モジュールを使う use

モジュールのバージョン

  • @EXPORT$VERSION 変数を指定しておく事でモジュールが use した時のチェックを行う事が出来る、と
  • モジュール側で
package hogehoge;
our @EXPORT = qw($VERSION);
our $VERSION = "1.0";

としておいて、呼び出し側はこう

use hogehoge 2.0;

とするとエラーになる

おなじみ use

  • use strict よく使うというか必須だよね
  • しかし、そこで何をしているかは考えた事も無かった・・・

    use モジュール名;
    という1つの文は、次の4行のプログラムと全く同じ動作になります。
    BEGIN {
    require モジュール名;
    import モジュール名;
    }

  • なるほど

  • つまり use はモジュールを読み込んで、さらにモジュール内の変数やサブルーチンを import すると
    • そのまんまやねん

うなる

変数は my をつけてレキシカル変数にする事で完全にプライバシーを守れ、モジュール外から見る事ができなくなりますが、サブルーチンだけは完全修飾名を使う事でモジュール外から見る事ができてしまいます。では、モジュール外からアクセスできないサブルーチンを定義する事はできるでしょうか?

答えは、できます。ちょっと難しい話ですが、ここまでの知識で答えられるのでちょっと考えてみてください。
はいおわかりですか。無名サブルーチンリファレンスを使って、それをmy変数に代入すれば良いですね。
これをプライベートメソッドと言います。

  • なるほど!