$_field = 0; %_merData = (); %_mergedData = (); while($_mergeFields) { $_field++; ($_tempVar,$_mergeFields) = split /\;/, $_mergeFields, 2; $_merData{$_field} = $_tempVar; } $_field = 0; while($_list_to_send_to) { ($_tempVar,$_list_to_send_to) = split /\|/, $_list_to_send_to, 2; my $_tempMailMessage = $_message; my $_tempSubject = $_subject; while($_tempVar) { $_field++; ($_tempVar2,$_tempVar) = split /\;/, $_tempVar, 2; $_mergedData{$_field} = $_tempVar2; } foreach $key (key(%_merData)) { $_tempMailMessage =~ s/$_merData{$key}/$_mergedData{$key}/ig; $_tempSubject =~ s/$_merData{$key}/$_mergedData{$key}/ig; if($_merData{$key} =~ /email##$/) { $__to = $_mergedData{$key}; } } go_send_the_message($__to,$_tempSubject,$_tempMailMessage); }