Как я могу генерировать HTML-таблицы в Perl? - PullRequest
1 голос
/ 19 марта 2010

Мне нужно создать 2 таблицы в формате HTML. Каждый имеет 5 строк:

1-й стол

  • 1-й ряд содержит ФРУКТЫ, занимающие все столбцы
  • 2-я строка имеет январь (месяц), занимая все столбцы
  • 3-й ряд содержит названия примерно 6 фруктов (яблоко, апельсин, виноград, ...). Эти названия не меняются. поэтому в этой строке 6 столбцов
  • В 4-й строке указаны ставки для каждого фрукта (10,20,30 ..), поэтому в нем 6 столбцов.
  • В 5-й строке есть соответствующее сообщение для каждого фрукта, показывающее, доступно или нет.

2-я таблица

Если доступно, цвет фона для ячейки должен быть зеленым, а если нет, то красным.

  • 1-й ряд содержит ОВОЩИ, занимающие все столбцы
  • 2-я строка имеет февраль (месяц), занимая все столбцы
  • 3-й ряд имеет названия примерно 6 овощей (помидор, картофель ..) Эти названия не меняются. поэтому в этой строке 6 столбцов
  • В 4-й строке указаны показатели для каждого овоща (10,20,30 ..), поэтому в нем 6 столбцов.
  • 5-я строка содержит соответствующее сообщение для каждого овоща, показывающее как Доступно или нет. Если доступно, цвет фона для ячейки должен быть зеленым, а если нет, то красным.

Все эти данные читаются из файла, имеющего определенный формат, это

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

Названия фруктов и овощей не меняются, они будут одинаковыми для обеих таблиц. Однако, возможно, что данные по конкретному фрукту / овощу отсутствуют. если его нет, в столбце для этого должно быть указано N / A с белым фоном.

Я не могу использовать MIME: Lite для этого. Нужно использовать print <<ENDHTML;

1 Ответ

1 голос
/ 13 июля 2014
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();
...