#!/usr/bin/perl use strict; use warnings; open my $FH1,"<", "file1.txt" or die "could not open file1.txt: $!"; open my $FH2,"<", "file2.txt" or die "could not open file2.txt: $!"; my @array=<$FH2>; while (my $line1 = <$FH1>) { my @hold; my @coll = split /\s+/, $line1; my $hit=$coll[5]; @hold = grep /$hit/, @array; my $held = shift @hold; if (defined $held) { my @cols = split /\s+/, $held; print join "\t", @cols; print "\n"; } else{ print join "\t", @coll; print "\n"; } } #### my %lines; read_results("file1.txt"); read_results("file2.txt"); print "$lines{$_}\n" for sort {$a <=> $b} keys %lines; sub read_results { my $fn = shift; open my $FH, "<", $fn or die "couldn't open $fn: $!"; while (my $line = <$FH>) { chomp $line; my ($id) = $line =~ /TAT_(\d+)/; next unless $id; $lines{$id} = $line; } }