$ cat -n get_projects.pl
1 #!/usr/bin/perl
2 use strict;
3 use warnings;
4 use Template;
5 use CGI;
6
7 $| = 1;
8 print "Content-type: text/html\n\n";
9
10 my $file = 'userinfo.html';
11 my $vars = {
12 'version' => 3.14,
13 'days' => [ qw( mon tue wed thu fri sat sun ) ],
14 'worklist' => \&get_user_projects,
15 'cgi' => CGI->new(),
16 'me' => {
17 'id' => 'crguezl',
18 'email' => 'crguezl@ull.es',
19 'name' => 'Casiano Rodriguez-Leon',
20 },
21 };
22
23 sub get_user_projects {
24 my $user = shift;
25 my @projects = ({ url => 'http://nereida.deioc.ull.es/~pl', name => 'pl' },
26 { url => 'http://nereida.deioc.ull.es/~lhp', name => 'lhp'},
27 { url => 'http://nereida.deioc.ull.es/~pp2', name => 'pp2'},
28 ); # do something to retrieve data
29 return \@projects;
30 }
31
32 my $template = Template->new({
33 PRE_PROCESS => 'config',
34 });
35
36 $template->process($file, $vars)
37 || die $template->error();
$ cat -n userinfo.html
1 [% INCLUDE header
2 title = 'Template Toolkit CGI Test'
3 %]
4
5 Author: <a href="mailto:[% me.email %]">[% me.name %]</a>
6
7 <p>This is version [% version %]</p>
8
9 <h3>Projects</h3>
10 <ul>
11 [% FOREACH project IN worklist(me.id) %]
12 <li> <a href="[% project.url %]">[% project.name %]</a>
13 [% END %]
14 </ul>
15
16 [% INCLUDE footer
17 %]
$ cat -n header
1 <html>
2 <head>
3 <title>[% author %]: [% title %]</title>
4 </head>
5
6 <body bgcolor="[% bgcol %]">
7 <h1>[% title %]</h1>
$ cat -n footer
1 <hr />
2
3 <div align="middle">
4 © Copyright [% year %] [% author %]
5 </div>
6 </body>
7 </html>
Casiano Rodríguez León
