http://www.perlmonks.org?node_id=411375


in reply to Re: inline replacement in existing regex
in thread inline replacement in existing regex

if using
$content =~ s/(\w+)(: *)(.*)\n<xxxxyyxxxx>\n/$1.":".$2.encode_base64($ +3,'')."\n"/ges;
it works but it takes the biggest text segment, not the smallest one which i want.
to answer to tall_man, i'm trying to clean the ldif output from mozilla to get standard ldap to include in a directory.
so i get a file with multiple
cn: dn=toto sn: XXX description: YYY

some of them base64 encoded, i have to decode them, for cn, add a good suffix, remove others, reformat ones, ...
some of theses base64 fields contains multiples lines and at the end of the conversion (reencoding base64) my file has:
cn: dn=toto sn: XXX description: YYY yyyy <xxxxyyxxxx> cn: dn=toto2 sn: XXX2 description: YYY2 cn: dn=toto3 sn: XXX3 description: YYY3 tttt uuuuuu <xxxxyyxxxx>

$content =~ s/(\w+)(: *)(.*)\n<xxxxyyxxxx>\n/$1.":".$2.encode_base64($ +3,'')."\n"/ges;

=> encode the largest matching
$content =~ s/(\w+)(: *)([^\n]*)\n<xxxxyyxxxx>\n/$1.":".$2.encode_base +64($3,'')."\n"/ges;

=> doesn't match field with more than 1 lines. i hope have been clearer.

thanks