Perl 将txt数据存储在哈希表中

Perl 将txt数据存储在哈希表中,perl,Perl,我有一个表(txt),我想读入perl并用相同的键将不同的列存储在单独的散列中。该表的详细内容如下所示: (第一列:ID, 第二栏:家长, 第三栏:性别, 第四栏:影响(U状态) a10米不 A2 0 f号 A3 A1A2 m号 A4 A1A2 f是 A5 A1A2 f是 B1 0米编号 我阅读了stackoverflow()中的旧线程,并得出以下结论: #!/usr/local/bin/perl use strict; my %pedigree= (); my $file = "pedig

我有一个表(txt),我想读入perl并用相同的键将不同的列存储在单独的散列中。该表的详细内容如下所示:

(第一列:ID, 第二栏:家长, 第三栏:性别, 第四栏:影响(U状态)

a10米不

A2 0 f号

A3 A1A2 m号

A4 A1A2 f是

A5 A1A2 f是

B1 0米编号

我阅读了stackoverflow()中的旧线程,并得出以下结论:

#!/usr/local/bin/perl

use strict;

my %pedigree= ();
my $file = "pedigree.txt";

open (pedigree,'<','pedigree.txt') or die ("Cannot open file");

while (<pedigree>) { 
  chomp;  
  my ($ID,$parents,$gender,$affection_status)=split /\t/; 
  $pedigree{$ID} = [$parents, $gender, $affection_status];

};
#/usr/local/bin/perl
严格使用;
我的%血统=();
my$file=“pedigree.txt”;

打开(谱系,
%谱系
应以您希望从中读取的相同方式填充

my @cols = qw(parents gender affection_status);
while (<pedigree>) {
  chomp;
  my ($ID, @arr) = split /\t/; 
  $pedigree{ $cols[$_] }{$ID} = $arr[$_] for 0 .. $#cols;
}
my@cols=qw(父母性别关系状况);
而(){
咀嚼;
我的($ID,@arr)=拆分/\t/;
$pedigree{$cols[$#]}{$ID}=$arr[$#]表示0..$#cols;
}

哇,太快了:-)非常感谢@Pustefix您还可以更改输出,
$pedigree{$ID}[1]
将表示性别
my @cols = qw(parents gender affection_status);
while (<pedigree>) {
  chomp;
  my ($ID, @arr) = split /\t/; 
  $pedigree{ $cols[$_] }{$ID} = $arr[$_] for 0 .. $#cols;
}