my %hash; # first open file1 while (my $line1 = <$file1>) { my $key = join ";", (split /,/, $line1)[1..3]; $hash{$key} = 1; } close $file1; open my $file2, "<", "file2.txt" of die "could not open file2.txt $!"; while (my $line2 = <$file1>) { my $key = join ";", (split /,/, $line2)[1..3]; if (exists $hash{$key}) { # do something } else { # do something else } }