#!/usr/bin/perl use warnings; use strict; while (my $line = ) { (my $group) = $line =~ /cn:\s+(\w+)/; process_record($group) if $group; } sub process_record { my $group = shift; my $line; while (defined ($line = ) and $line !~ /^\s*$/) { (my @columns) = $line =~ /=(\w+)/g; print join ',',($group,@columns); print "\n"; } } =example printout applegroup,mem001,Users,myorg,com applegroup,mem002,Users,myorg,com applegroup,mem003,Users,myorg,com applegroup,mem004,Users,myorg,com orangegroup,mem301,Users,myorg,com orangegroup,mem302,Users,myorg,com orangegroup,mem303,Users,myorg,com =cut __DATA__ cn: applegroup member: CN=mem001,OU=Users,DC=myorg,DC=com member: CN=mem002,OU=Users,DC=myorg,DC=com member: CN=mem003,OU=Users,DC=myorg,DC=com member: CN=mem004,OU=Users,DC=myorg,DC=com cn: orangegroup member: CN=mem301,OU=Users,DC=myorg,DC=com member: CN=mem302,OU=Users,DC=myorg,DC=com member: CN=mem303,OU=Users,DC=myorg,DC=com