$ perl -Mstrict -Mwarnings -E ' my $x = qq{tlp_p2 <= (((((((NOT(tlp_p0(0) XOR tlp_add_p0(0)) AND\n}; $x .= q{ NOT(tlp_p0(1) XOR tlp_add_p0(1))) AND }; $x .= q{NOT(tlp_p0(2) XOR tlp_add_p0(2))) etc}; say for $x =~ /(NOT\(tlp_p0\(\d+\) XOR tlp_add_p0\(\d+\))/gm; ' NOT(tlp_p0(0) XOR tlp_add_p0(0) NOT(tlp_p0(1) XOR tlp_add_p0(1) NOT(tlp_p0(2) XOR tlp_add_p0(2) #### $ perl -Mstrict -Mwarnings -E ' my $x = qq{tlp_p2 <= (((((((NOT(tlp_p0(0) XOR tlp_add_p0(0)) AND\n}; $x .= q{ NOT(tlp_p0(1) XOR tlp_add_p0(1))) AND }; $x .= q{NOT(tlp_p0(2) XOR tlp_add_p0(2))) etc}; $x =~ s/\A\w+ <= \(+(.*?)\) etc\z/$1/ms; say for split /\)\s*AND\s+/ => $x; ' NOT(tlp_p0(0) XOR tlp_add_p0(0) NOT(tlp_p0(1) XOR tlp_add_p0(1)) NOT(tlp_p0(2) XOR tlp_add_p0(2))