型グロブにおける自戒
{ no strict 'refs'; *foo = sub { ... }; }
みたいにしてよくつかう型グロブですが,当然ながらそのネームスペースの空間を汚しているんですね。ですから,AUTOLOAD で新しい無名サブルーチンを追加すると,他のインスタンスからもアクセスできてしまいます。
ですから,自戒としてですが,
- インスタンスメソッドのエイリアスを作りたいとき(Catalyst の req と request の関係のような)
- そのクラスで一意な値が得られるものを(自動的に)追加したいとき(dan 氏作の Unicode::Char のような)
- クラスメソッドを自動的に拡張したいとき
- クラス自体を他のクラスによって拡張したいとき(Class::Accessor の mk_accessor() のような)
に限り使うようにするべし,と思いました。