use strict; use warnings; my $_mergeFields = "##fname##;##lname##;##email##;##phone##;"; my $_list_to_send_to = "Richard;Smith;myemail\@testmail.com;8005551212;|Toby;Johnson;email2\@testmail.com;8885551212|Chanty;Perkins;another\@test.com;8665551212;"; my $_message = qq~ Hello ##fname## how are you today? Hopefully your day is going well. I am the list server for some company, blah blah blah, and I have listed your phone number as ##phone##. Well, here is all the data I have for you: Name: ##fname## ##lname## Phone: ##phone## email: ##email## So I just wanted to say thank you for signing up yesterday to get emails from us, and if you don't want to receive any more just click the link below and we won't send any more out. blah blah ~; my @fields = split( ';', $_mergeFields ); my @recipients = split( '\|', $_list_to_send_to ); foreach my $recipient ( @recipients ) { my @recip_data = split( ';', $recipient ); my $recip_msg = $_message; foreach my $field ( @fields ) { my $value = shift @recip_data; $recip_msg =~ s/$field/$value/g; } print $recip_msg, "\n\n"; }