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が拡張された際、互換性に問題がでそうなのでやめておきました。

もっと簡単でいい方法があれば、採用したいと思いますのでネタプリーズ

このブログ記事について

このページは、Masahiro Naganoが2010年11月18日 14:50に書いたブログ記事です。

ひとつ前のブログ記事は「HTMLのscriptタグ内にデータを埋め込む際のエスケープ処理モジュール書いた」です。

次のブログ記事は「XSSを回避しつつ、テンプレートからJavaScriptにJSONで値を渡す方法」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

ウェブページ

OpenID対応しています OpenIDについて
Powered by Movable Type 4.27-ja