使用Perl进行CGI表编程:我可以在格式中使用if语句或循环吗?

时间:2012-02-03 21:40:01

标签: perl cgi

例如,我可以在Perl代码的中间使用if语句来创建多个行吗?

感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

我猜你有类似

的东西
print
   table(
      Tr(
         td(...),
         td(...),
         td(...),
      ),
      Tr(
         td(...),
         td(...),
         td(...),
      ),
      Tr(
         td(...),
         td(...),
         td(...),
      ),
   );

并且您希望在table的调用中使用循环和条件。

您不能将语句(包括if (...) { ... }for (...) { ... })放在表达式的中间(例如子程序调用)。但是,通过使用中间存储,您可以实现您想要的目标。

程序方法:

my @trs;
for my $row (...) {
   my @tds;
   for my $field (@$row) {
      push @tds, td($field);
   }

   push @trs, Tr(@tds);
}

print table(@trs);

功能方法:

print
   table(
      map {
         Tr(
            map {
               td($_)
            } @$_
         )
      } ...
   );