メモ

リファクタリングの必要性

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以上必須となる