#!/usr/bin/perl -w use Template 2.22; sub sub_expand() { @expand_result = (); push(@expand_result, #hash #1 {'item_name' => "item_name #1", 'item_desc' => 'item description #1', 'item_size' => 4, 'item_kind' => 'item_kind #1', 'item_type' => 'item_type #1'}, #hash #2 {'item_name' => "item_name #2", 'item_desc' => 'item description #2', 'item_size' => 4, 'item_kind' => 'item_kind #2', 'item_type' => 'item_type #2'} ); return @expand_result; } my $tt = Template->new({ INCLUDE_PATH => "./", VARIABLES => { EXP => \&sub_expand, #macro OUTPUT_PATH => "./", ABSOLUTE => 1 } }) || die $tt->error, "\n"; $tt->process("template.txt", {}, "output.txt") || die $tt->error;