in reply to splitting data

G'day amma,

Welcome to the monastery.

I had a few issues with your example.

If the repeated, internal pattern is the same throughout, you can do something like this:

$ 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)

If you want to use split, I'd chop off any leading and trailing dross then split something like this:

$ 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))

-- Ken