【问题标题】:How can I generate HTML tables in Perl?如何在 Perl 中生成 HTML 表格?
【发布时间】:2020-08-26 23:20:28
【问题描述】:

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

第一个表

  • 第一行有 FRUITS,占满所有列
  • 第2行有1月(月),占据所有列
  • 第三行有一些 6 种水果的名称(苹果、橙子、葡萄......)这些名称不会改变。所以这一行有 6 列
  • 第 4 行包含每种水果的费率 (10,20,30..),因此有 6 列。
  • 第 5 行有每个水果的相应消息,显示为可用或不可用。

第二张桌子

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

  • 第一行有蔬菜,占据所有列
  • 第2行有2月(月),占据所有列
  • 第三行有一些 6 种蔬菜的名称(番茄、马铃薯……)这些名称不会改变。所以这一行有 6 列
  • 第 4 行包含每种蔬菜的费率 (10,20,30..),因此有 6 列。
  • 第 5 行有每种蔬菜的相应消息,显示是否可用。如果可用,则单元格的背景颜色应为绿色,否则为红色。

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

 价格

水果和蔬菜的名称不变,两张桌子都一样。 但是,可能不存在特定水果/蔬菜的数据。 如果它不存在,则该列应显示 N/A 与白色背景。

我不能为此使用MIME:Lite。 需要使用print <<ENDHTML;

【问题讨论】:

标签: perl html-generation


【解决方案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();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-19
    • 2014-07-15
    • 1970-01-01
    • 2018-02-06
    • 2012-04-27
    相关资源
    最近更新 更多