use 5.16.2; use warnings; my $annotationfile = "file.tsv"; open my $fh, "<", $annotationfile or die "$annotationfile: $!\n"; # First read the header my @hdr = split m/\t/ => scalar <$fh>; my %GOHash; # Now read every line while (<$fh>) { chomp; # read as a hash my %hash; @hash{@hdr} = split m/\t/ => $_, 11; $GOHash{$hash{Symbol}}{$hash{"Taxon Name"}} = $hash{ID}; }