Practice of Programming

プログラム とか Linuxとかの話題

Util::All Perlのユーティリティを集めてみる

YAPC::Asia 2009 面白かったです。運営の皆様方、お疲れ様でした&ありがとうございました。
今回、「記憶」のセッションを訳したのですが、相変わらず拙くて申し訳なかったです。
Tutorialを訳し中なので、近々あげたいと思います。


で、YAPCで刺激をもらったので、新しいモジュールに手を付け始めました。
Util::Allというモジュールです。

これは、以前に作ったUtil::Any を使って,色んなモジュールのユーティリティを集めたものになります。


使い方は、Util::Anyと変わりません。

use Util::All -list, -md5;

print md5_base64("aaaaaa");
print uniq (1,2,3,1,3,4,5,8);

こんな感じ。


今まで手をつけなかった理由として、僕自身がそんなにモジュールのユーティリティ関数を知らないっていうのと、名前の衝突とかをいい感じに回避したい(命名規則的に)ってのがあって、気軽に作る気になれなかったんです...が、ちょっといい方法を思いついたので,さくっと始めてみました。


今回はコードを書かずに、下記のようなYAMLファイルだけをいじることにしました。

---
list:
  List::Util: *
  List::MoreUtils: *

debug:
  Data::Dumper:
    - Dumper: dumper
  Data::Dump:
    - dump

listていう種類は、List::Util と、List::MoreUtils の全関数(@EXPORT, @EXPORT_OKの)をexportする。
debugていう種類は、Data::Dumper の Dumper を dumper として、また、Data::Dump の dump をexportする。
っていう感じで、定義を行い、

% perl create_util_all.pl

で、Makefile.PL と、lib/Util/All.pm を作成することにしました。
これで、定義ファイルを変えるだけで、気軽に変更出来るので、楽ちんになりました。


このUtil::Allは気にくわないor社内の非公開モジュールも突っ込みたいって時も、このファイルを書き換えて、上記のコマンドを打てば、自分用のUtil::Allが作れますので、なかなか便利じゃないかなぁと。


コードはgithubにあげました。なお、定義ファイルですが、まだ全然精査してないので、変える可能性が大いにあります。
http://github.com/ktat/Util-All/tree/master