my %hash_table_1; open(INFILE_1, "<$infile_1"); while (my $line_1 = ){ my @Elements_1 = split ';', $line_1; chomp($Elements_1[1]); $hash_table_1{$Elements_1[0]} = $Elements_1[1]; } my %hash_table_2; open(INFILE_2, "<$infile_2"); while (my $line_2 = ){ my @Elements_2 = split ';', $line_2; chomp($Elements_2[1]); $hash_table_2{$Elements_2[0]} = $Elements_2[1]; } my @KEYS_1 = keys(%hash_table_1); my @KEYS_2 = keys(%hash_table_2); my $key_1; foreach $key_1(@KEYS_1){ if ( defined $hash_table_2{$key_1}){ print OUTFILE "$key_1;$hash_table_1{$key_1};$hash_table_2{$key_1}\n"; } } close OUTFILE; close INFILE_1; close INFILE_2;