如何使用map函数从Perl中的数组创建自定义哈希?

时间:2015-11-25 01:26:05

标签: perl

我有一些JavaScript:

var $things = [
  {
    "id": "1",
    "image": "one.png"
  },
  {
    "id": "2",
    "image": "two.png"
  },
];

它被转换为Perl数组($thingsJSON是上面的字符串表示形式):

 my $coder = JSON::XS->new->utf8;
 my $things = $coder->decode($thingsJSON);

想要一个$things上的地图函数,它将返回一个如下所示的集合($args):

(
  image => "one.png",
  image => "two.png"
)

我希望能够将上面的$args传递给另一个函数:

$Bar->find($args)

1 个答案:

答案 0 :(得分:1)

假设你真正想要的是一个包含列表的数组,你可以传递给那个期望键/值对的函数,这可以工作:

@args = map { (image => $_->{image}) } @$things;

为清楚起见,这与

相同
@args = map { ('image', $_->{image}) } @$things;

也就是说,map只返回一个列表,其中所有偶数元素都是字符串"image",所有奇数元素都是image的值@$things中某个元素的键。