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 #### ${ $HoAoArrays{KN-1792-LAST_rep_c7834} }[0]->[1] = 2e-150 ${ $HoAoArrays{KN-1792-LAST_rep_c7834} }[1]->[1] = 4e-37 ${ $HoAoArrays{KN-1792-LAST_rep_c7834} }[2]->[1] = 4e-37 ${ $HoAoArrays{KN-1792-LAST_rep_c7834} }[3]->[1] = 4e-35 ${ $HoAoArrays{KN-1791-LAST_rep_c7834} }[0]->[1] = 2e-139 ${ $HoAoArrays{KN-1791-LAST_rep_c7834} }[1]->[1] = 4e-46 ${ $HoAoArrays{KN-1791-LAST_rep_c7834} }[2]->[1] = 4e-46 $VAR1 = { 'KN-1792-LAST_rep_c7834' => [ [ 'IMGA|Medtr4g125100.1', '2e-150', '497' ], [ 'IMGA|Medtr4g125100.1', '4e-37', '187' ], [ 'IMGA|Medtr4g125100.2', '4e-37', '187' ], [ 'IMGA|Medtr4g125100.3', '4e-35', '188' ] ], 'KN-1791-LAST_rep_c7834' => [ [ 'IMGA|Medtr4g125100.1', '2e-139', '497' ], [ 'IMGA|Medtr4g125100.1', '4e-46', '187' ], [ 'IMGA|Medtr4g125100.2', '4e-46', '187' ] ] };