in reply to $var$cnt problems

Can i assume this is a CGI script? How are you currently accessing any of the GET/POST'd variables? I think you're looking for something along the lines of:
use strict; use warnings; use CGI qw/:standard/; my $name = ...; # param('name') maybe? my $email = ...; # param('email') maybe? foreach my $cnt ( 1.. 5 ){ my $fmail = param('fmail'.$cnt); my $fname = param('fname'.$cnt); next unless $fmail && $fname; open(MAIL,"| $sendmail") or die "Can't open sendmail $!"; print MAIL "To: $fmail\n"; print MAIL "From: $email\n"; print MAIL "Subject: Refer A Friend\n"; print MAIL "Dear $fname,\n\n"; print MAIL "Your friend, $name at $email, visited out site re +cently and thought you would be interested..\n\n"; print MAIL "This is NOT spam. This email was sent by someone +who said they knew you. Your email address is not stored in any data +bases and will not be sold or given to anyone at any time. This is t +he only time you will receive an email from us."; close(MAIL); }
Also, Mail::Sendmail may be of interest.