You may find it helpful to add this line to your index.pl script while debugging. Remove it when all the errors have been fixed
use CGI::Carp 'fatalsToBrowser';
Using CGI
package newindex;
use strict;
use CGI ':standard';
sub getTitle {
return "workers";
}
sub getContent {
my $cgi = shift;
my $hashref = {
'Adam' => 'Eve',
'Clyde' => 'Bonnie',
};
my @rows;
push @rows,th(['Column 1', 'Column 2',]);
for (sort keys %$hashref){
push @rows,td([$_ , $hashref->{$_}])
}
return table({ -border => 1 },
caption('My Table 1'),
Tr({-align=>'center',-valign=>'top'}, \@rows )
);
}
1;
Or better using Template
package newindex;
use strict;
use Template;
sub getTitle {
return "workers";
}
sub getContent {
my $cgi = shift;
my $hashref = {
'Adam' => 'Eve',
'Clyde' => 'Bonnie',
};
my %data=();
$data{'header'} = ['Column 1','Column 2'];
for (sort keys %$hashref){
push @{$data{'rows'}},{ key=>$_ , value=>$hashref->{$_} };
}
my $TMPL = <<'EOT';
<table border="1" cellspacing="0" cellpadding="5">
<tr>
[% FOREACH col IN header %]
<th>[% col %]</th>
[% END %]
</tr>
[% FOREACH record IN rows %]
<tr>
<td>[% record.key %]</td>
<td>[% record.value %]</td>
</tr>
[% END %]
</table>
EOT
my $template = Template->new();
my $html;
$template->process(\$TMPL, \%data, \$html)
|| die "Template process failed: ", $template->error(), "\n";
return $html;
}
1;
updated : added header
poj