【问题标题】:Reading a TSV record into a Perl hash将 TSV 记录读入 Perl 哈希
【发布时间】:2012-09-17 20:45:37
【问题描述】:

我有一个数组 @fields 包含 $record 中制表符分隔值的名称(例如,它可能是从文件的记录 0 填充的) .

数组条目的顺序对应于记录中值的顺序。

我想用 field => value 条目为记录中的每个值填充 %hash

是否有单线可以做到这一点?我不知道如何协调遍历 @fieldssplit("\t", $record) 列表。

我能想到的最好的就是

my %hash;
my @values = split("\t", $record);
for my $field (@fields) {
    my $value = shift @values;
    $hash{$field} = $value;
}

但我怀疑有一种更简单的方法。

谢谢。

【问题讨论】:

    标签: perl hash


    【解决方案1】:

    有 -- 这是hash slice 符号:

    @values = split /\t/, $record;
    @hash{@fields} = @values;
    

    @hash{@fields} = split /\t/, $record;
    

    【讨论】:

      【解决方案2】:

      这行得通:

      @hash{@fields} = @values;
      

      例如:

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

      【讨论】:

        猜你喜欢
        • 2016-04-03
        • 2011-11-29
        • 2013-10-07
        • 1970-01-01
        • 2011-04-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-22
        • 2020-01-29
        相关资源
        最近更新 更多