#! perl -slw use strict; ( my $input = do{ local $/; } ) =~ 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=user)(!(homeM DB=*))(!(msExchHomeServerName=*)))(&(objectCategory=person)(objectClass=user)(| (homeMDB=*)(msExchHomeServerName=*)))(&(objectCategory=person)(objectClass=cont act))(objectCategory=group)(objectCategory=publicFolder)(objectCategory=msExchD ynamicDistributionList) )))(objectCategory=contact)(proxyAddresses=smtp:*exampl e.com))) #### 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)) )