use strict;
use Data::Dumper;
my @found = map { {ID=>$_} } qw( abC e8q xxx 11m );
my $matched = 0;
my %manager = (
1 => {
bob => { members => [qw{ abc def gdF }] }
},
7 => {
alice => { members => [qw{ 5hg 8DF 9iw }] },
charlie => { members => [qw{ 2je e8q 11M }] }
}
);
foreach my $id (keys %manager){
foreach my $manager (keys %{$manager{$id}}){
for my $i (0..$#{$manager{$id}{$manager}{'members'}}){
my $index=0;
foreach my $emp (@found){
if ($emp->{'ID'}=~/$manager{$id}{$manager}{'members'}[$i]/i){
splice(@found, $index, 1);
print $emp->{'Name'} . "\n";
$matched++;}
$index++;}}}}
print "Matched: ($matched) ", Dumper \@found;
####
@found = grep { ! exists %members{ lc $_->{ID} } } @found;
####
if ( $emp->{ID} =~ /$some_regex/i ) {
push @emp_found => $emp;
print $emp->{'Name'} . "\n";
}
else {
push @emp_ot_found => $emp;
}