我有一个数组 @fields ,其中包含 $ record 中以制表符分隔的值的名称(例如,它可能已从文件的记录0填充) 。
数组条目的顺序对应于记录中值的顺序。
我想用 field =>填充%hash 值记录中每个值的条目。
这样做是否有单行程?我无法弄清楚如何同时协调遍历 @fields 和 split(“\ t”,$ record)列表。
我能想出的最好的是
my %hash;
my @values = split("\t", $record);
for my $field (@fields) {
my $value = shift @values;
$hash{$field} = $value;
}
但我怀疑有一种更简单的方法可以做到。
感谢。
答案 0 :(得分:4)
有 - hash slice符号:
@values = split /\t/, $record;
@hash{@fields} = @values;
或
@hash{@fields} = split /\t/, $record;
答案 1 :(得分:0)
这有效:
@hash{@fields} = @values;
e.g:
my @fields = qw[one two three four];
my @values = (1, 2, 3, 4);
my %hash;
@hash{@fields} = @values;
use Data::Dumper;
print Dumper(\%hash);
输出:
$VAR1 = {
'three' => 3,
'one' => 1,
'two' => 2,
'four' => 4
};