Attribute::Protected

g:hatena:id:hatenatech:20051108:1131539607の活用例にある「miyagawaモジュール」ってなんだろうと思っていたら、blog.nomadscafe.jp: Perlのattributes CGI::Application::Plugin::AutoRunmodeにてAttribute-Protectedというモジュールがあることが分かった。

やってることは、所謂OO言語にあるPublic/Protected/Privateを実現する物なんだけど、ソースを見て、あまりのエレガントさに感動。シンボルテーブルを触って、Privateを付けていたらパッケージ名が同じかどうかチェックする部分を挟んでいる、というのがそのまま表現されてる。

さらに、Attribute::Handlersというのを使ってるみたい。こちらもコード本体は200行余り。というかコードの3倍PODが書かれてる:D

こうやって、言語拡張すら、やりたいことが短く表現できるのがPerlなんだなぁ。