如何在Perl中生成HTML表?

时间:2010-03-19 10:17:17

标签: perl html-generation

我需要以HTML格式创建2个表。每个都有5行:

第一桌

  • 第一行包含FRUITS,占据所有列
  • 第二行有一月(月),占据所有列
  • 第3行有6个水果的名称(苹果,橙子,葡萄......)这些名称不会改变。所以这一行有6列
  • 第4行有每个水果的费率(10,20,30 ..)所以这有6列。
  • 第5行对每个水果都有相应的信息,显示为是否可用。

第二桌

如果可用,则单元格的背景颜色应为绿色,如果不是红色。

  • 第一行有VEGETABLES,占据所有列
  • 第二行有二月(月),占据所有列
  • 第3行有6种蔬菜(番茄,土豆......)的名称。这些名称不会改变。所以这一行有6列
  • 第4行有每种蔬菜的费率(10,20,30 ..)所以这有6列。
  • 第5行有相应的消息显示每种蔬菜显示为可用或不可用。如果可用,则单元格的背景颜色应为绿色,如果不是红色。

所有这些数据都是从具有特定格式的文件中读取的,它是

<name of fruit/vegetable> price <available or not>

水果和蔬菜的名称不会改变,两个表格都会相同。 但是,可能不存在特定水果/蔬菜的数据。 如果它不存在,那列应该显示带有白色背景的N / A.

我无法使用MIME:Lite。 需要使用print <<ENDHTML;

1 个答案:

答案 0 :(得分:1)

use HTML::TagTree;
use strict;

my $html = HTML::TagTree->new('html');
$html->head->title('Fruits');

my $table = $html->body->table();
$table->tr->td('Fruits','colspan=6');
$table->tr->td('February','colspan=6');
my @fruits = qw(apples bananas coconut dates figs guava);
my @rates = (10,20,30,40,50,60);
my $tr_fruits = $table->tr;
my $tr_rates = $table->tr;
my $tr_available = $table->tr;
for (my $col=0; $col<6; $col++) {
   $tr_fruits->td($fruits[$col]);
   $tr_rates->td($rates[$col]);
   # Randomly make available
   my $available = int(rand(1000)/500 + .5);
   if ($available) {
      $tr_available->td('Available','style=background-color:green');
   } else {
      $tr_available->td('Out of Stock','style=background-color:red');
   }
}
print $html->print_html();