サブルーチンのアトリビュート

Catalyst に関して書かれたページを読んでると出てくるサンプルコード,

sub foobar : Global {
    ....
}

とか,なんかかっこいいですよ。あれなんですか?
と思ってマニュアルみたら,アトリビュートとかいうものらしいです。perlsub の「Subroutine Attributes」の項とか attributes に書いてあります。が,読んでいて頭痛がしたので読むのやめました。
Catalyst では Catalyst::AttrContainer あたりで,アトリビュート付きアクションをディスパッチャーへコンパイル時に登録しているようです。なので,実際の invoke 時には素早く処理されるそうです。
仕組みは MODIFY_xxx_ATTRIBUTES とか FETCH_xxx_ATTRIBUTES などのクラス関数を使っています…が,attributes の「Package-specific Attribute Handling」という項では,「WARNING: the mechanisms described here are still experimental」と書いてあります。現実的には,Perl 5.6 以降?で標準添付の Attribute::Handlers を使った方がわかりやすいし安全な感じです。miyagawa さんの Attribute::Protected も,Attribute::Handlers を使っています。

追記 2006/04/13

Yappo さんがいろいろやっていらっしゃいました。
今のところなんか mod_perl だと Attribute::Handlers がうまく動いていないです。