my $tab = 0; ## Number of 'tabs' to insert starts at zero
$input =~ s[
( ## Capture to $1
[()] ## All open or close parens
)
]{ ## /e-xecute turns the second half into a code block.
## Decrement teh tab count if this is a close paren
$tab-- if $1 eq ')';
## Insert a newline + $tab tabs before the paren (open or close)
my $modified = "\n" . ( " " x $tab ) . $1;
## Increment the tab count if this is an open paren
$tab++ if $1 eq '(';
## And 'return' the modified text for substitution
$modified;
}xge;
## Late addition:
## Second pass strips out any 'lone' close parens
## to compact the results a little.
$input =~ s[\n\s+\)][)]g;
Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
Lingua non convalesco, consenesco et abolesco. -- Rule 1 has a caveat! -- Who broke the cabal?
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.
|