将TSV记录读入Perl哈希

时间:2012-09-17 20:45:38

标签: perl hash

我有一个数组 @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;
}

但我怀疑有一种更简单的方法可以做到。

感谢。

2 个答案:

答案 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
    };