#!/usr/bin/env perl use strict; use warnings; use autodie; my ($user_file, $ldap_file) = qw{pm_1079590_user.txt pm_1079590_ldap.txt}; open my $user_fh, '<', $user_file; my @users; while (<$user_fh>) { chomp; push @users, $_; } close $user_fh; my $user_re = 'uid=(' . join('|', @users) . '),'; my %user_ldap_data; open my $ldap_fh, '<', $ldap_file; my $user = ''; while (<$ldap_fh>) { if (/^dn:/) { $user = /$user_re/ ? $1 : ''; next; } next unless $user; push @{$user_ldap_data{$user}}, $1 if /^maillocaladdress:\s+(\S+)/; } close $ldap_fh; use Data::Dump; dd \%user_ldap_data; #### { game => [ "game\@example.com", "game.test\@example.com", "game-test\@example.com", ], test1 => [ "test1\@example.com", "test.team\@example.com", "test11\@example.com", ], }