Two More questions:
Is it possible to have alternating row colors (i read a documentation where we can define evenrowclass and oddrowclass while defining a table using HTML::Table. But it doesnt say how to define a class.
-evenrowclass=>'even',
-oddrowclass=>'odd',
2. Is it possible to change the font face of the table? or we have to specifically give col/row wise font as below:

Remember that the table is being created in HTML so any formatting you can do in HTML you can do in your Perl code. Some email clients don't do a great job with HTML styling, but this is for your own consumption so there's little to worry about there. For instance, if your email client supports CSS (mine doesn't) you can include CSS styles that will change the font for the entire table. If not, you're stuck with setting the individual cell styles or formats.

There are many resources online for HTML, but here are a couple hints for your questions.

# Set background color for alternate rows
$table->setRowBGColor($_ * 2, '#9999CC') for (1..12);
# Set a border and make it green
$table->setStyle('border:4px solid green;');

Yeah, it's complaining because the HTML table expects 7 elements and is only getting 4. I'm sure there is better code to fix this up, but here is a quick fix to ensure that addRow always gets 7 defined elements: