use strict; use warnings; open OUTPUT, '>', 'output.txt' or die; my @record; my $uid_flag = 0; while (){ chomp; unless ( /^$/ ){ push @record, $_; $uid_flag++ if /^uid/; } else{ for ( @record ){ print OUTPUT "$_\n"; if ( /^cn/ and ! $uid_flag ){ my ( $field, $value ) = split ':'; print OUTPUT "uid:$value\n"; } } @record = (); $uid_flag = 0; print OUTPUT "\n"; } } close OUTPUT; __DATA__ dn: cn=MTOP,cn=users,dc=myco,dc=com orcldefaultprofilegroup: cn=myco,cn=portal_groups,cn=groups,dc=myco,dc=com cn: MTOP orclactivestartdate: 20031028060637Z objectclass: top objectclass: person objectclass: inetOrgPerson objectclass: organizationalPerson objectclass: orclUser objectclass: orclUserV2 sn: Joe givenname: Blow o: myo userpassword: {MD4}oLezu+AceuHBDEBHFuVDwg== dn: cn=me,cn=users,dc=polk,dc=com orcldefaultprofilegroup: cn=user_grp,cn=portal_groups,cn=groups,dc=myco,dc=com userpassword: {MD4}oLezu+AceuHBDEBHFuVDwg== orclactivestartdate: 20031030114555Z objectclass: top objectclass: person objectclass: inetOrgPerson objectclass: organizationalPerson objectclass: orclUser objectclass: orclUserV2 cn: me uid: me sn: Administrator givenname: me o: myco