Log::Minimal-0.03でオブジェクトやリファレンスをDumpするメソッドを追加しました。
warnf( "dump is %s", ddf({ foo => bar }) );
とddfメソッドが追加されました。上は
local $Data::Dumper::Terse = 1;
local $Data::Dumper::Indent = 0;
warnf( "dump is %s", Data::Dumper::Dumper({ foo => bar }) );
と同じです。
短く書けていいよね!
ddfとか追加せずに自動でDumpしてもいいかなと思ったんだけど、URIオブジェクトとかだと結果が
bless( do{\(my $o = 'http://example.com/')}, 'URI::http' )
こうなる。Data::Dumperでは自動でstringfyしない。これはなんとなく欲しい情報ではない気がして個別にddfをかます方を選択しました。URIだけを取りたいのであれば、
my $uri = URI->new("http://example.com/");
warnf("uri is %s", $uri);
でいけるので、もっと簡単
Data::Rmapとoverload::Methodでどうにかとか思ったけど依存増えるので辞めました。
あと、sprintfのフォーマットを増やすのも考えたんだけどtokuhiromに指摘された通り、将来perlのsprintfが拡張された際、互換性に問題がでそうなのでやめておきました。
もっと簡単でいい方法があれば、採用したいと思いますのでネタプリーズ