use strict; use warnings; $/ = q(); while (my $record = ) { my @lines = split /\n/, $record; my $header = shift @lines; my ($grpNm) = $header =~ /\:\s*(\w+)/; foreach (@lines) { my ($memID) = unpack '@12A6'; print "$grpNm, $memID\n"; } } __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 #### applegroup, mem001 applegroup, mem002 applegroup, mem003 applegroup, mem004 orangegroup, mem301 orangegroup, mem302 orangegroup, mem303