perl 5 まとめウィキ

namespace::autocleanに続くcoolモジュールはこれですね。exportされたモジュールは外部からは参照できなくなっています。

B::Hooks::EndOfScopeを使ったcoolモジュール。

サンプル

MyDumper

dumper()という関数を、AutoCleanを使って作成、sup()という関数を普通に作成しています。
package MyDumper;
use Exporter::AutoClean;
use Data::Dumper;

sub import {
    my $class  = shift;
    my $caller = caller;
    Exporter::AutoClean->export(
            $caller,
            dumper => sub { print Dumper(@_) } ,
            );

    *{"$caller\::sup"} = sub { print "sky\n" };
}

1;

MyTool

MyDumperをuseしています。 debug()という関数ないで、dumper()を利用しています。
package MyTool;
use warnings;
use strict;
use MyDumper;

sub debug {
    dumper(@_);
}

1;

利用してみる

dumperを呼ぶとちゃんとエラーになります。
use MyTool;
MyTool->sup();
#MyTool->dumper('よべないよこれ。'); # コメントとると、そんな関数はないとエラーになります。
MyTool->debug('これはよべる');
結果
sky
$VAR1 = 'MyTool';
$VAR2 = 'これはよべる';

SEE ALSO

namespace::autoclean

B::Hooks::EndOfScopeは、MooseX::Declareなどで、make_immutableかかなくてすむようにするhackがありますが、これで実現してますね。

このページへのコメント

aM7gqJ Thanks-a-mundo for the blog post.Thanks Again. Want more.

0
Posted by seo thing 2013年12月19日(木) 19:29:48 返信

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Wiki内検索

Menu

ここは自由に編集できるエリアです。

フリーエリア

どなたでも編集できます