#!/usr/bin/perl use strict; use warnings; my ($file1, $file2) = @ARGV; my %hash_file1; open my $FILE1, "<", $file1 or die "Cannot open $file1 for processing!\n"; while (my $line = <$FILE1>) { my ($key, @fields) = split /\s+/, $line; $hash_file1{$key} = join ":", @fields; } close $FILE1; open my $FILE2, "<", $file2 or die "Cannot open $file2 for processing!\n"; while (my $line = <$FILE2>) { my ($key, @fields) = split /\s+/, $line; my $rest_of_line = join ":", @fields; if (exists $hash_file1{$key}) { # this is a common record (same identifier) print $key, ":", $hash_file1{$key}, ":", $rest_of_line, "\n"; } } close $FILE2;