Perl 将数组元素复制到散列

Perl 将数组元素复制到散列,perl,Perl,我有一个具有以下结构的哈希数组: @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" = 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",
 },
);

也许您应该将
@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;

也许您应该将
@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;

如果在一个散列引用中,则散列切片可以工作。但是,由于必须跨多个哈希引用填充特定字段,因此需要一个循环

use List::Util 'min';

$fields[$_]->{value} = $data[$_] for 0 .. min( $#fields, $#data );

如果在一个散列引用中,则散列切片可以工作。但是,由于必须跨多个哈希引用填充特定字段,因此需要一个循环

use List::Util 'min';

$fields[$_]->{value} = $data[$_] for 0 .. min( $#fields, $#data );

这真是太好了。非常感谢。这真是太好了。非常感谢。