open(FILE_HANDLE, ">", "$filename") || die "ACK, GASP: $error_message: $!\n"; my @data = ; chomp(@data); close FILE_HANDLE; my %db_hash; my $unique_id = 0; foreach (@data) { next if(m/^\s*$/); my %temp_hash = (); s/^\s+//; # Remove excess whitespace s/\s+$//; m/^(.*?)=(.*?)$/i; # Grab key/value pairs $temp_hash{$1} = $2; $db_hash{$unique_id} = \%temp_hash; $unique_id++; } open(NEW_FILE, "<", "$new_filename") || die ACK, GASP: $error_message: $!\n"; foreach my $id (sort keys %db_hash) { if(not defined $db_hash{$id}{email}) { $db_hash{$id}{email} = $some_value; } foreach (sort keys $db_hash{$id}) { print NEW_FILE "$_=$db_hash{$id}{$_}\n"; } print "\n"; } close NEW_FILE;