メモ
リファクタリングの必要性
File::MMagicには、MagicMatch?()とMagicMatchStr?()というほぼ同様の処理を行う 関数がある。コードのほとんどは同じだが、操作対象がファイルハンドルか、 スカラー変数に含まれる文字列かという点で異なっている。
対象が異なるだけで同じような処理を行うコードが重複しているのはバグの温床に なりやすく、これらを統一することが望まれる。
PerlのあるバージョンからIO::Stringが標準添付されているので、それを用いることが できればすべてをMagicMatch?()に統一することができる。一方で、IO::Stringを 持たないバージョンのPerlがFile::MMagicの動作対象外になるという問題がある。
これについてどう折り合いをつけるかを考える必要がある。
結論
MLでの議論の結果、次のようにする。
- 1.x系 - これまでどおりMagicMatchStr?()とMagicMatch?()両方をつかった実装にする
- 2.x系 - IO::Stringを使ってリファクタリングを行う。Perl 5.6以上必須となる
