The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/local/bin/perl -w
use strict;
use Benchmark;
use blib;


timethese(50_000,
	  {
	   fasttemplate => q( fasttemplate() ),
	   trivial      => q( trivial() ),
	  }
	 );

exit;

sub fasttemplate {
    use CGI::FastTemplate;

    my $tmpl = new CGI::FastTemplate;
    $tmpl->define( main => 'main.tmpl',
		   head => 'head.tmpl',
		   body => 'body.tmpl' );

    $tmpl->assign(TITLE => "This is the title");
    $tmpl->assign(TEST  => "Testing 1 2 3...");
    $tmpl->parse(HEAD => 'head');
    $tmpl->parse(BODY => 'body');
    $tmpl->parse(MAIN => 'main');
    my $ref = $tmpl->fetch('MAIN');
}

sub trivial {
    use Template::Trivial;

    my $tmpl = new Template::Trivial;
    $tmpl->define( main => 'main.tmpl',
		   head => 'head.tmpl',
		   body => 'body.tmpl' );
    $tmpl->assign(TITLE => "This is the title");
    $tmpl->assign(TEST  => "Testing 1 2 3...");
    $tmpl->parse(HEAD => 'head');
    $tmpl->parse(BODY => 'body');
    $tmpl->parse(MAIN => 'main');
    my $ref = $tmpl->to_string('MAIN');
}

BEGIN {
    open FILE, ">main.tmpl"
      or die;
    print FILE <<_EOF_;
<html>
{HEAD}
{BODY}
</html>
_EOF_
    close FILE;

    open FILE, ">head.tmpl"
      or die;
    print FILE <<_EOF_;
<head>
<title>{TITLE}</title>
</head>
_EOF_
    close FILE;

    open FILE, ">body.tmpl"
      or die;
    print FILE <<_EOF_;
<body>
<h2>{TITLE}</h2>
This is a {TEST}.
</body>
_EOF_
    close FILE;
}

END {
    unlink qw(main.tmpl head.tmpl body.tmpl);
}