Perl CGI |Синтаксис списка определений - PullRequest
1 голос
/ 08 августа 2010

Не удается найти правильный синтаксис для создания списка определений через Perl для создания вывода следующим образом:

<dt>One</dt> 
        <dd><p>Testing 1</p></dd> 
<dt>Two</dt> 
        <dd><p>Testing 2</p></dd> 
<dt>Three</dt> 
        <dd><p>Testing 3</p></dd> 
</dl> 

Не могу найти документацию по использованию. Я пробовал $cgi->dl($cgi->dt([One,Testing1,Two,Testing2,Three,Testing3]))); и другие варианты, но пока не повезло. Поиск в Google или perldoc пока не помог.

Ответы [ 2 ]

3 голосов
/ 08 августа 2010
print $cgi->dl(
        $cgi->dt('One'),
        $cgi->dd(
                $cgi->p('Testing 1')
        ),
        $cgi->dt('Two'),
        $cgi->dd(
                $cgi->p('Testing 2')
        ),
        $cgi->dt('Three'),
        $cgi->dd(
                $cgi->p('Testing 3')
        ));

Я бы действительно переключился на Template-Toolkit вместо генерации структуры данных, используя CGI.pm.

2 голосов
/ 09 августа 2010

Дэвид прав насчет синтаксиса и предложения использовать Template :: Toolkit .Или другой шаблонный модуль.

Вот простой пример, который генерирует страницу из шаблона в разделе скрипта DATA.

Конечно, настоящая сила приходит, когда вы храните отдельные файлы шаблона и повторно используетеи объединить их.

#!perl

use strict;
use warnings;

use Template;

my $page_data = {
    title => 'DL Demo',
    data  => [
        {   terms => ['One Term'],
            data  => ['One Definition'],
        },
        {   terms => [qw( Many Terms )],
            data  => ['One Definition'],
        },
        {   terms => ['One Term'],
            data  => [qw( Many Definitions )],
        },
    ],
};

my $tt = Template->new() or die "Ugh";

$tt->process(\*DATA, $page_data);


__DATA__

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Strict//EN">
<html>
  <head>
    <title>[% title %]</title>
  </head>
  <body> 
    <div id="header">
      <a href="/index.html" class="logo" alt="Home Page"></a>
      <h1 class="headline">[% title %]</h1>
    </div>

    <div id="data">
      <dl>
         [% FOREACH item = data %] 
         [% FOREACH term = item.terms %] <dt> [% term %] </dt> [% END %]
         [% FOREACH defdata = item.data %] <dd> [% defdata %] </dd> [% END %]
         [% END %]
      </dl>
    </div>


  </body>
</html>

Вот вывод:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Strict//EN">
<html>
  <head>
    <title>DL Demo</title>
  </head>
  <body> 
    <div id="header">
      <a href="/index.html" class="logo" alt="Home Page"></a>
      <h1 class="headline">DL Demo</h1>
    </div>

    <div id="data">
      <dl>

         <dt> One Term </dt> 
         <dd> One Definition </dd> 

         <dt> Many </dt>  <dt> Terms </dt> 
         <dd> One Definition </dd> 

         <dt> One Term </dt> 
         <dd> Many </dd>  <dd> Definitions </dd> 

      </dl>
    </div>

  </body>
</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...