my @output_lines; my $model_number=0; foreach my $gene_name (keys %details_of_match) { $output_lines[$model_number]= qw{ } x length($original_seq_string); for (my $i=0; $i< scalar( @{$details_of_match{$gene_name}} ); $i++ ) { substr $output_lines[$model_number] # the new line , $details_of_match{$gene_name}->[$i][0] # the position , 21 # the length (constant) , $details_of_match{$gene_name}->[$i][2] #the pattern ; } $model_number++; }