in reply to Template Toolkit - passing hashes
Replace this:
With:$vars = { data => %data, today => $today };
Otherwise perl will expand the %data hash into a list.$vars = { data => \%data, today => $today };
Another problem is that you are building a hash of hashes, but your template seems to expect a list of hashes.
You should always use both strict and warnings by the way.
In Section
Seekers of Perl Wisdom