JSONを返すスクリプトの記事で、リストを作るときに以下のようにしていたのですが。

1
2
3
4
5
6
7
8
9
10
my @json;
for my $msg (@{$messages}) {
push @json,
{
id => $msg->id,
msg => $msg->msg,
ts => $msg->ts,
};
}
$self->render(json => [@json]);

レコードの情報は、get_columnsで取得できることがわかった。 それをふまえて書くと、上の処理に相当するコードは以下のようになります。

1
2
3
4
5
my @json;
for my $msg (@{$messages}) {
push @json, $msg->get_columns;
}
$self->render(json => [@json]);

ここまで来たら、mapを使って書いてみたいですよね。

1
2
my @json = map { $_->get_columns } @{$messages};
$self->render(json => [@json]);

で、これだけだったら、直接書いても良さそうです。

1
$self->render(json => [map { $_->get_columns } @{$messages}]);

ただ、本当なら、$messagesから直に変換出来れば便利ですけどね。