in reply to HTML Email Help!

$color1="#f3f3f3"; $color2="#a1a1a1"; $rowcolor = $alt_color++%2 ? $color1:$color2;

Let me show you a dirty trick:

{ my $num = 0; use Interpolation 'rowcolor:->$' => sub { (++$color % 2) ? '#a1a1a1' +: '#f3f3f3'} };
and now we have a variable that alternates between those two values. Neat isn't it? The Interpolation.pm was made to let you specify some code that gets evaluated when a variable (scalar or hash) is interpolated into a string, though of course it works even if you use the variable outside any string.

my $out = " <tr bgcolor=\"$rowcolor\"> <td width=\"\">$system_names[$c]</td> <td width=\"\">$name_names[$c]</td> <td width=\"\">$menu_names[$c]</td> <td width=\"\">$option_names[$c]</td> <td width=\"\">$system_names[$c]</td> <td width=\"\">Received</td> </tr> ";

This looks like a bad datastructure design. Imagine you need to pass all those arrays somewhere. Imagine you need to insert another item somewhere in the middle. And imagine you add yet another one later!

You should use an array of hashes instead so that all this can be referenced and passed as a single datastructure:

my $out = qq{ <tr bgcolor="$rowcolor"> <td width="">$names[$c]{system}</td> <td width="">$names[$c]{name}</td> <td width="">$names[$c]{menu}</td> <td width="">$names[$c]{option}</td> <td width="">$names[$c]{system}</td> <td width="">Received</td> </tr> };