use strict; use warnings; my %hash1; open my $FH, "<", $ARGV[0] or die "Could not open input file $ARGV[0] $!"; while (chomp (my $line = <$FH>)) { my $file1_element = (split /\t/, $line)[5]; $hash1{$file1_element} = $_; } close $FH; open my $FH2, "<", $ARGV[1] or die "Could not open input file $ARGV[1] $!"; while (chomp (my $line = <$FH2>)) { my $file2_element = (split /\t/, $line)[5]; print $_ . "\t$hash1{$file2_element}\n" if exists $hash1{$file2_element}; }