1

次の構造のハッシュの配列があります。

@fields 
(
 {
   "id" => "Name",
   "type" => "Text",
   "value" = undef,
 },
 {
   "id" => "DOB",
   "type" => "Date",
   "value" = undef,
 },
);

次の要素を持つ配列があります。

@data = ("John", "10/10/1970");

to の要素をコピーして、配列インデックスを反復して使用することなく、次の@dataものを取得する最良の方法は何でしょう。@fields

@fields 
(
 {
   "id" => "Name",
   "type" => "Text",
   "value" = "John",
 },
 {
   "id" => "DOB",
   "type" => "Date",
   "value" = "10/10/1970",
 },
);
4

2 に答える 2

3

これが単一のハッシュ参照内にある場合、ハッシュ スライスは機能します。ただし、複数のハッシュ参照にわたって特定のフィールドに入力する必要があるため、ループが必要になります。

use List::Util 'min';

$fields[$_]->{value} = $data[$_] for 0 .. min( $#fields, $#data );
于 2013-04-09T07:13:15.357 に答える
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;
于 2013-04-09T07:10:23.487 に答える