Catalyst attributes

Cagtalystのコードみてて、attributesが気になってしまった。

attributes->import( __PACKAGE__, \&namespace, 'lvalue' );


いいろいろ調べてみたらCatalyst::AttrContainerに行き着けた。

     14 sub MODIFY_CODE_ATTRIBUTES {
     15     my ( $class, $code, @attrs ) = @_;
     16     $class->_attr_cache( { %{ $class->_attr_cache }, $code => [@attrs] } );
     17     $class->_action_cache(
     18         [ @{ $class->_action_cache }, [ $code, [@attrs] ] ] );
     19     return ();
     20 }

微妙にすっきりした。

こちらのページで書かれていること非常に参考になりました。
あざっす。

http://hatena.g.hatena.ne.jp/hatenatech/20051108/1131539607
http://search.cpan.org/~nwclark/perl-5.8.8/lib/attributes.pm
http://blog.yappo.jp/yappo/archives/000347.html