如何从Perl中的地图返回hashrefs列表?

Fre*_*idt 2 perl list map

我有以下几乎正常的代码:

my $results = { data => [
   map {
      my $f = $_->TO_JSON;
      $f->{display_field} = $_->display_field($q);
      $f;
   } $rs->all
]};
Run Code Online (Sandbox Code Playgroud)

只有我更喜欢它更像是以下内容:

my $results = { data => [
   map {
      %{$_->TO_JSON},
      display_field => $_->display_field($q),
   }, $rs->all
]};
Run Code Online (Sandbox Code Playgroud)

但是这会产生语法错误.我怎样才能做我想要的,或者我现在的版本是最好的?

更新:抱歉以前的额外分号.现在已经很晚了.不知道我是怎么错过它的.多谢你们!

der*_*ert 7

它只会出现语法错误,因为Perl认为你需要省略后面的逗号map { ... },因为它将该映射解析为块,而不是表达式.放在+前面会解决这个问题.此外,您不能在匿名哈希中使用分号:

my $results = { data => [
   map +{
#      ^----------------- plus sign added
      %{$_->TO_JSON},
      display_field => $_->display_field($q);
#                                           ^---- should be comma or nothing
   }, $rs->all
]};
Run Code Online (Sandbox Code Playgroud)