This seems to get closed to the required output:
Updated: Corrected fencepost-ish error.
Update2: Added a second pass to condense it a bit.
#! perl -slw
use strict;
( my $input = do{ local $/; <DATA> } ) =~ tr[\n][]d;
my $tab = 0;
$input =~ s[([()])]{
$tab-- if $1 eq ')';
my $modified = "\n" . ( " " x $tab ) . $1;
$tab++ if $1 eq '(';
$modified;
}ge;
$input =~ s[\n\s+\)][)]g;
print $input;
__DATA__
(&(&(&(& (mailnickname=*) (| (&(objectCategory=person)(objectClass=use
+r)(!(homeM
DB=*))(!(msExchHomeServerName=*)))(&(objectCategory=person)(objectClas
+s=user)(|
(homeMDB=*)(msExchHomeServerName=*)))(&(objectCategory=person)(objectC
+lass=cont
act))(objectCategory=group)(objectCategory=publicFolder)(objectCategor
+y=msExchD
ynamicDistributionList) )))(objectCategory=contact)(proxyAddresses=smt
+p:*exampl
e.com)))
Yields: P:\test>junk1
(&
(&
(&
(&
(mailnickname=*)
(|
(&
(objectCategory=person)
(objectClass=user)
(!
(homeMDB=*))
(!
(msExchHomeServerName=*)))
(&
(objectCategory=person)
(objectClass=user)
(|
(homeMDB=*)
(msExchHomeServerName=*)))
(&
(objectCategory=person)
(objectClass=contact))
(objectCategory=group)
(objectCategory=publicFolder)
(objectCategory=msExchDynamicDistributionList) )))
(objectCategory=contact)
(proxyAddresses=smtp:*example.com))
)
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.
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.
|