my %header_line = read_header_or_something($mail_file); while(my %recipient_info = get_info_from_db()) { while(my ($header, $value) = each %header_line) { $value =~ s/__(.+?)__/$recipient_info{$1}/g; print "$header: $value\n"; } }