新しいblogに移行しました

新ブログ "All Yout Bugs Are Belong To Ass" に移行しました!

2009-10-30

[Perl]Mouseでメソッドアトリビュートをいじりたくなったものの

ざっくりMo(o|u)seのドキュメントを見た限り、そんなものは無いようだった。
そのかわり、Sub::Attributeというモジュールが適任っぽいのがわかった。

例によってチラ裏的なコード。


package HogeFuga;
use Data::Dumper;
use Mouse;
use Sub::Attribute;

sub myattr : ATTR_SUB {
print Dumper( { attr => [ @_ ] } );
}

sub hoge : myattr( 'a123', 'xyz' ) {
my $self = shift;
print Dumper( { arg => [ @_ ] } );
}
__PACKAGE__->meta->make_immutable;
no Mouse;

my $c = HogeFuga->new;
$c->hoge( 'aaa', 'bbb' );


結果は以下の通り。

$VAR1 = {
'attr' => [
'HogeFuga',
\*HogeFuga::hoge,
sub { "DUMMY" },
'myattr',
'\'a123\', \'xyz\''
]
};
$VAR1 = {
'arg' => [
'aaa',
'bbb'
]
};

0 件のコメント: