my %lookup; while (<$LDIF>) { my ($dn) = /^dn: (.*)$/m; my ($samACCOUNTNAME) = /^samACCOUNTNAME: (.*)$/m; $lookup{$dn} = $samACCOUNTNAME if defined $dn and defined $samACCOUNTNAME; # only if both are found } #### if($lookup{$current_dn}) { ... } #### push @{$lookup{$dn}}, $samACCOUNTNAME; #### $lookup{$current_dn}[0]