#!/usr/bin/perl -w use strict; use warnings; use diagnostics; use Data::Dumper; ########################## my %hash; my %hash2; my @a1; my $header_line = <>; my @headers = split(/\t/,$header_line); my $index=0; my %col_header = map { $_ => $index++} @headers[1..$#headers]; # #print Dumper \%col_header; while (<>) { chomp; @a1=split(/\t/,$_); my $fromAA=shift(@a1); foreach my $toAA (keys %col_header){ $hash{$fromAA}{$toAA} = $a1[$col_header{$toAA}]; } } print Dumper \%hash;