我有一个具有以下结构的Hashes数组:
@fields
(
{
"id" => "Name",
"type" => "Text",
"value" = undef,
},
{
"id" => "DOB",
"type" => "Date",
"value" = undef,
},
);
我有一个包含以下元素的数组:
@data = ("John", "10/10/1970");
将@data
的元素复制到@fields
以获得以下内容而不必迭代和使用数组索引的最佳方法是什么。
@fields
(
{
"id" => "Name",
"type" => "Text",
"value" = "John",
},
{
"id" => "DOB",
"type" => "Date",
"value" = "10/10/1970",
},
);
答案 0 :(得分:3)
也许您应该将@fields
改为哈希,这样您就可以轻松地按名称检索字段。
use warnings;
use strict;
my %fields =
(
Name => {
type => "Text",
value => undef,
},
DOB => {
type => "Date",
value => undef,
},
);
my @data = ("John", "10/10/1970");
$fields{Name}->{value} = $data[0];
$fields{DOB}->{value} = $data[1];
use Data::Dumper;
print Dumper %fields;
答案 1 :(得分:3)
如果哈希切片位于单个哈希引用中,则它将起作用。但是,由于必须跨多个哈希引用填充特定字段,因此需要一个循环。
use List::Util 'min';
$fields[$_]->{value} = $data[$_] for 0 .. min( $#fields, $#data );