my $string = "huckabee AND jfkadlsfj fdsfldfj06329 OR reagan AND biden AND clinton OR sebelius OR mccain"; my @chunks = split / AND /, $string; @chunks = map { /OR/ ? "($_)" : $_ } @chunks; print join(' AND ', @chunks), "\n"; __END__ huckabee AND (jfkadlsfj fdsfldfj06329 OR reagan) AND biden AND (clinton OR sebelius OR mccain)