use Modern::Perl; use Data::Dumper; my %HoAoArrays; while () { chomp; my ( $col0, @cols1_3 ) = split /\t/; push @{ $HoAoArrays{$col0} }, \@cols1_3; } for my $key ( keys %HoAoArrays ) { my $numElements= @{ $HoAoArrays{$key} }; for ( my $i = 0 ; $i < $numElements; $i++ ) { say '${ $HoAoArrays{' . $key . '} }[' . $i . ']->[1] = ' . ${ $HoAoArrays{$key} }[$i]->[1]; } say ''; } say '', Dumper \%HoAoArrays; __DATA__ KN-1791-LAST_rep_c7834 IMGA|Medtr4g125100.1 2e-139 497 KN-1791-LAST_rep_c7834 IMGA|Medtr4g125100.1 4e-46 187 KN-1791-LAST_rep_c7834 IMGA|Medtr4g125100.2 4e-46 187 KN-1792-LAST_rep_c7834 IMGA|Medtr4g125100.1 2e-150 497 KN-1792-LAST_rep_c7834 IMGA|Medtr4g125100.1 4e-37 187 KN-1792-LAST_rep_c7834 IMGA|Medtr4g125100.2 4e-37 187 KN-1792-LAST_rep_c7834 IMGA|Medtr4g125100.3 4e-35 188