# untested! use Encode qw(decode); use Unicode::Semantics qw(up); up($line = decode 'UTF-8', $line); my $word = qr/\b(?!(?:AND|OR|XOR|NOT)\b)\w+/i; $line =~ s/($word)\s*($word)/$1 AND $2/g for 1..2;