| 
 | |
|  | 
Программа, позволяющая полностью управлять статическим и, если того захотеть, динамическим наполнением сайта. Или писать вызовы обращений к базе данных прямо в тексте 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 .
| Закладки на сайте Проследить за страницей | Created 1996-2025 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |