The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Каталог документации / Раздел "Perl" / Оглавление документа

Mason - онлайновый парсер статических файлов на perl

Программа, позволяющая полностью управлять статическим и, если того захотеть, динамическим наполнением сайта. Или писать вызовы обращений к базе данных прямо в тексте html-страницы.

Для её запуска необходимы Apache и mod_perl.

В httpd.conf нужно дописать то, о чем написано в man HTML::Mason. После этого Ваш сайт(вне зависимости от его размера) ну, если не становится ручным пони, то уж точно чем нибудь типа уральского тяжеловоза. Все описания и другие оставшиеся слова можно прочитать на сайте http://www.masonhq.com/. Сначала HTML-Mason, потом mod_perl, далее некоторая возня с service httpd restart на предмет "в httpd.conf нужно дописать то, о чем написано в man HTML::Mason, ну, примерно то, что нужно написать". Потом создать директорию /path/to/dir/for/mason. После её создания пишем простой test.html:

   <HTML>
   <HEAD>
   <TITLE>Yo! Wazzup!!!!
   % my $noun = 'World';
   % my $date = qx[date];
   Hello <% $noun %>!
   Today is <% $date %>
   % my $ua = $r->header_in('User-Agent');
   % if ($ua =~ /msie/i) {
     Welcome, Internet Explorer users
   ...
   % } elsif ($ua =~ /mozilla/i) {
     Welcome, Netscape users
   ...
   % }
   </TITLE></HEAD>
   <BODY BGCOLOR="#FFFFFF">
   <H1>Yo! Wazzup!!!!</H1>
   <& index.file &>
   </BODY>
   </HTML>
строчка, в которой содержится сам код, должна начинаться с символа %:% my $noun = 'World'; Если не хочется кадый раз ставить символ процента, то код можно поставить в между тегами
<%perl> 
... to do...
</%perl>
Аналогично директивам SSI из html странички можно вызывать и файлы(в том числе и текстовые, например если создается библиотека).
<& index.html &>
Можно так-же делать включения скриптов вида
%# <& /include/all_newsheads.msn &>
Хотя так-же спокойно можно включать скрипты командой qx[lalalala]

Например обращение к базе данных на серверной стороне:

    <html>
      <head><title><% $headline %></title></head>
      <body>
      <h2><% $headline %></h2>
      By <% $author %>, <% $date %><p>
      
      <% $body %>
      
      </body></html>

      <%init>
      # Fetch article from database
      my $dbh = DBI::connect ...;
      my $sth = $dbh->prepare("select * from articles where id = ?");
      $sth->execute($article_id);
      my ($headline,$date,$author,$body) = $sth->fetchrow_array;
      # Massage the fields
      $headline = uc($headline);
      my ($year,$month,$day) = split('-',$date);
      $date = "$month/$day";
      </%init>

      <%args>
      $article_id
      </%args>
Фактически блок <%init> эквивалентен блоку <%perl>. При таком введении наиболее читаемые компоненты (особенно для непрограммистов) содержат HTML в одном непрерывном блоке наверху, с простыми заменами для динамических элементов, и никаких отвлекающих и запутывающих блоков кода на perl.

Примеры работы, http://www.pereplet.ru, литературный журнал, где каждое высказывание в дискуссии по определенному произведению прицепляется к определенному произведению html. И практически на одном mason'е написан научный сервер http://www.nature.ru .


Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру