MySQL & mSQL

Встроенный Perl


Несколько модулей Perl и соответствующих программ позволяют встраивать код Perl в документ HTML. Перед отправкой окончательной страницы HTML броузеру этот код выполняется CGI-программой.

Наиболее очевидное преимущество таких решений перед W3-mSQL и РНР заключается в том, что в качестве языка сценариев в HTML-файле используется обычный Perl. Будучи простыми в изучении и схожими по стилю с С и Perl, языки сценариев Lite и РНР все же являются уникальными патентованными языками, используемыми лишь с единственной целью. Напротив, Perl практически вездесущ. Это стандартный язык программирования, отлаживавшийся на протяжении многих лет и обладающий развитыми возможностями в отношении безопасности. В пользу такого типа решений есть убедительные аргументы.

ePerl

Первым приложением, позволившим встраивать код Perl в текст ASCII и, в частности, в документ HTML, был ePerl. Сама программа ePerl написана на С и предназначена для использования в качестве интерпретатора Perl общего назначения для документов ASCII. Она прекрасно работает с HTML, но не имеет специфических для HTML или веб-возможностей, предоставляемых некоторыми другими пакетами.

EmbPerl

Программа EmbPerl создана позднее, чем ePerl, и более ориентирована на HTML и Web. Она позволяет использовать дополнительные «метакоманды» - теги в стиле HTML, обрабатываемые EmbPerl, - которые вводят в сам HTML возможности ветвления и другие элементы программирования .

В качестве примера встраивания кода Perl в файл HTML рассмотрим форму для вывода данных из базы данных по акулам, приводившуюся выше. Мы будем использовать в нашем примере EmbPerl, но поскольку используется стандартный Perl, код практически одинаков для различных средств встраивания Perl.

<HTML>

<НЕАD><ТIТLЕ>Результаты поиска акул</title></head>

<BODY>

<Н1> Вот акулы, удовлетворяющие условиям поиска...</h1>

<р>

[-



use Msql;

use CGI qw(:standard);

$dbh = Msql->connect; $dbh->selectdb("sharks");


%age = ( '0' => 'Молодые',

'1' => 'Взрослые',

'2' => 'Старые'

);

# Начинаем построение запроса. В результате типичный запрос

# может выглядеть так:

# SELECT * FROM SHARK WHERE SPECIES='Isurus Paucus' AND AGE=2

$query = "select * from sharks where ";

if ( Sspecies or Sage or $location) {

$query .= " where ";

$query .= join(" and ", param); }

Sresult = $dbh->query($query);

if (result == -1) {

echo("Error : " . Msql->errmsg . "\n");

exlt(l);

}

Snumresults = $result->numrows;

-]

<UL>

[$if (! Snumresults ) $]

<Н2>Результатов не найдено </h2> [SelseS]

[Swhile (%shark = $Msql->fetchhash($result)) $]

<LI>

<IMG SRC="graphics/shark[+$shark{'id'}+].gif" ALIGN=LEFT>

<В>Вид:</b> [+$shark{'species'}+]<br>

<В>Возраст:</b> [+$age{$shark{'age'}}+]<br>

<В>Район </b> [+$shark{'location'}+]<br>

[;endwhile$] [;endif] </ul>

<A HREF="search.html">Hoвый поиск </а>

</body></html>


Содержание раздела