すぐわかる オブジェクト指向 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をつけてレキシカル変数にする事で完全にプライバシーを守れ、モジュール外から見る事ができなくなりますが、サブルーチンだけは完全修飾名を使う事でモジュール外から見る事ができてしまいます。では、モジュール外からアクセスできないサブルーチンを定義する事はできるでしょうか?
ourをつけた変数やサブルーチンは当然外から参照ができる。myをつけると外から参照ができない。- これはもしや、オブジェクト指向でいうカプセル化!?隠蔽化ってやつ!?
- うちのオブジェクト指向の主な知識は情報処理試験と「オブジェクト指向でなぜつくるのか 第2版
」です
- それはともかく、どうやって・・・
答えは、できます。ちょっと難しい話ですが、ここまでの知識で答えられるのでちょっと考えてみてください。
はいおわかりですか。無名サブルーチンリファレンスを使って、それをmy変数に代入すれば良いですね。
これをプライベートメソッドと言います。
- なるほど!