PerlでJSONを作る時に、ハッシュから作っても良いのだけども、Data::Dumperを使ってさくっと作る方法をメモ。
sample
use Data::Dumper;
my $data;
for my $hoge ( keys %{$hoge} ) {
$data->{ $hoge{'uniq_no'} }->{'created_at'} = $hoge{'created_at'} || '';
$data->{ $hoge{'uniq_no'} }->{'username'} = $hoge{'username'} || '';
}
my $dump = Data::Dumper->new( [$data] )->Indent(1)->Terse(1)->Useqq(0)->Sortkeys(sub { [sort {$data->{$b}->{'created_at'} cmp $data->{$a}->{'created_at'}} keys %{$_[0]}] })->Pair(':')->Dump;
$dump =~s/'/"/mg;
Sortkeysの中で無名サブルーチンを使ってソートしているのが、みそです。
あと、「|| ''」とすることで、undefの表示を潰しています。
Useqqを有効にすると2バイト文字がエスケープするため、ここでは無効にし、後から置換で「'」から「"」に変換しています。
ここもData::Dumperのオプションでさくっとできれば良いのだけど、Data::Dumperモジュールの改修以外の方法で、良い案ないかなー。