■2005-04-13
* [Perl] JSONをCPANに
ここしばらく調子悪くて作業ができませんでしたが、やっとJSONモジュールをCPANにアップしました。次バージョンでJSON-RPCもパッケージに含む予定。
0.91でJSONRPCも含めました。
* [Perl][メモ] autobox
以前Scalar::Propertiesで一瞬だけ触れたautoboxのバージョンがあがって、Perl5.8.1にパッチをあてなくても利用できるようになりました。試したところautobox 1.02がPerl5.8.0 (linux)で入りました。
autoboxを使うと、スカラー値やハッシュリファレンス、リストリファレンス、コードリファレンスからメソッドを呼び出せるようになります。例えば3.1415はSCALARという型に属して、my $three = 3.1415->int;などとできるように(後述のようにautoboxだけではできません)。また自作のクラスをSCALAR, ARRAY, HASH, CODEの各型として設定可能(autoboxはスコープレキシカルなプラグマなので途中で変更したり、no autoboxできます。他に四つの型全てに適用されるDEFAULT, undefに対するUNDEF, デバッグ用?のREPORTなどがあります。
ただし、autobox自体はメソッドを提供しないので、autobox::Coreのようなモジュールが必要になります。autobox::Coreは多くの組み込みの関数(さらにHash::Utilからlock_keysなども導入)やPerl6で導入されるいくつかのものをメソッドとして利用可能にします。ただ、ARRAY型のforがバグってるぽいです(最後の要素にアクセスしない)。
use autobox;
use autobox::Core;
"Hello World."->length->print; # 12を出力
[12,51,29,54,67,98,23]->sort
->reverse
->print;
# 98 67 54 51 29 23 12
$array = [1..10];
$array->join(',')->print;
そうするとJSON::*とかつくってあげて
{
use autobox DEFAULT => 'JSON::';
my $js = {foo => 'bar'}->toJson();
# {"foo":"bar"}
}
とか出来そうですね。
* [Perl][メモ] CGI::ApplicationをSledgeっぽく使うラッパー
朝倉さんのところでCGI::ApplicationをSledgeっぽく使うラッパーって需要があるのかな?というのが。 似たようなことをCGI::Prototypeでやろうとしていたので、これは大変有り難そうです。

