コンストラクタメソッド

プラグインごとにコンストラクメソッドが定義してあったけど、クラスごとに変数の値が違うだけでメソッド自体はどれも同じなので、全部Tangerine::Plugin::Baseから継承するように変更。Class::Data::Accessorを使ってクラス変数に対するアクセサメソッドを作って、コンストラクタはそのメソッドを呼び出すようにしました。最初からこうしておけばよかった。

Class::Data::InheritableとClass::Data::Accessor

Perlに関する質問です。 Class::Data::InheritableとClass::Data… - 人力検索はてな

Class::Data::InheritableとClass::Data::Accessorの違いがよくわからないので人力検索Perlに詳しい人に聞いてみる。詳しい人から見たら「なにを当たり前なことを聞いてるんだ」って感じなのかもしてないけど。

クラス変数を定義するのか、クラス変数とインスタンス変数のデフォルトを定義するのかの違いみたい。あとで自分でも詳しくドキュメントとソース読まないといけないなぁ。英語は苦手なんていってられない。最低限読めないと何もできないしね。

is_matchメソッド

あとで少し書き直そう。今のままでもいいんだけど、サブクラスを作ったときに、マッチするべきパターンが多い場合は正規表現のARRAYrefを受け取るようにis_matchをオーバーライドしてるんだけど、これT::P::Baseの中に移してしまおう。refで判断してやればいいね。

いや、たとえシンプルなパターン1個だけでも必ずARRAYrefを渡すほうがスマートかな? そっちのほうが綺麗だよなぁ。

メモ