#!/usr/bin/perl use strict; use warnings; my $readfile = 'blah.csv'; my $writefile = 'bleh.csv'; # Note that you were opening $writefile for READ open my $fh, "<", $readfile or die "Unable to open $readfile: $!"; open my $wfh, ">", $writefile or die "Unable to open $writefile: $!"; foreach (<$fh>) { $_ = uc $_; chomp; my ($col1, $col2) = split /;/; my @col1_words = split /\s+/, $col1; my @col2_words = split /\s+/, $col2; my %hash; @hash{@col1_words} = undef; my $found = 0; for my $word (@col2_words) { $found++ if exists $hash{$word} } print $wfh "$_;".@col1_words.";$found\n"; } close ($fh); close ($wfh);