in reply to pattern matching
use Text::Balanced "extract_delimited"; my $out; my $r = ' if (c=e) { // delete this curly brace call pgme; call pgmd; } // delete this curly brace else {call pgmd; // keep these curly braces call pgmc;} if (c=e) { // delete this curly brace call pgme; call pgmd; } // delete this curly brace else {call pgmd; // keep these curly braces call pgmc;} if (c=e) { // delete this curly brace call pgme; call pgmd; } // delete this curly brace else {call pgmd; // keep these curly braces call pgmc;} if (c=e) { // delete this curly brace call pgme; call pgmd; } // delete this curly brace else {call pgmd; // keep these curly braces call pgmc;} '; while (($e, $r, $s) = extract_delimited ($r, "{\"}", '(?s)[^{]*')){ do {$out .= $r; last } unless $e ; if ($s =~/if /) { $e =~s/[{]//; # make sure we don't nuke something in a quoted block. $e = reverse $e; $e =~s/[}]//; $e = reverse $e; }; $out .= $s . $e; } print $out;
|
|---|