in reply to HTML::Template problems

The fact that you have 14 returned is probably due to the fact that you return @msgs. If that is returned in scalar context then you get @msgs in scalar context, which tells you how many things are in @msgs.

Furthermore I suspect that you are seriously mangling your attempt to deal with references to arrays. It may be time to re-read references quick reference, and then replace your while loop with something like this:

while ( my $thread = $sth->fetchrow_hashref() ){ push @msgs, [$thread->{id}, $thread->{name}, $thread->{date}, $thread->{subj}, $thread->{day_rate}, $thread->{msg}]; }
Though personally I would be inclined to keep an anonymous hash data structure like this:
while ( my $thread = $sth->fetchrow_hashref() ){ # I duplicate the data because DBI says that it may # choose to reuse the reference that it returns. push @msgs, { %$thread }; }
(I would also indent differently, but that is cosmetic.)