繁体   English   中英

Perl:从数组创建哈希

[英]Perl: Create a hash from an array

如果我有以下数组

my @header_line = ('id', 'name', 'age');

如何从它创建一个等价于下面一行的哈希?

my %fields = { id => 0, name => 1, age => 2};

我想这样做的原因是我可以使用有意义的名称而不是魔法数字作为索引。 例如:

$row->[$fields{age}]; # rather than $row->[2] 
my %fields;
@fields{@header_line} = (0 .. $#header_line);
my %fields = map { $header_line[$_] => $_ } 0..$#header_line;

您在回复评论中说,这是来自Text :: CSV。 此模块有一种方法可以将此导入哈希。

$csv->column_names( @header_line );
$row = $csv->getline_hr( $FH );
print $row->{ 'id' };

my %fields = ();
for (my $i = 0; $i < scalar(@header_line); $i++) {
   $fields{$header_line[$i]} = $i;
}

TIMTOWTDI

my %fields = ();
foreach my $field(@header_line)
{
  %fields{$field} = scalar(keys(%fields));
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM