my %hash; while ( ) { ( my $line = $_ ) =~ s/\s+$//; my ( $Rank, $id, $C, $Position ) = split /\t/, $line; next unless $Rank =~ /\d/; $hash{ $Rank } = "$id\t$C\t$Position"; } while ( ) { ( my $line = $_ ) =~ s/\s+$//; my @b = split /\t/, $line; next unless $b[ 0 ] =~ /\d/; my $Start_rank = $b[ 1 ]; if ( exists $hash{ $Start_rank } ) { print join( "\t", $Start_rank, $hash{ $Start_rank }, @b[ 2 .. 9 ] ), "\n"; } else { print "no match\n"; } }