foreach $f (@files) { open FILE, $f or die "Error: $!"; while() { chomp; my ($k,$v)=split("=",$_,2); # Assume dn= comes before other lines if ($k eq "dn") { push(@machines,$k); $machine = $k; } else { push(@{$machine}{$k},$v); } } close FILE; }