camel
Модуль HTML::Phl
Для обработки HTML-документов, содержащих инструкции с кодом Perl
О модуле Спецификация Downloads Контакты

Спецификация  

В спецификации PHL определено три варианта написания инструкций:


1. Линейная инструкция:
   %pl [keys] [perl code] 
2. Инструкция в виде однострочного блока:
   <%pl[(:|=)[name]] [keys] [perl code] %>
3. Многострочный блок:
   <%pl[(:|=)[name]] [keys]
      [perl code]
   %>
где

'%pl', '<%pl', '%>' - указатели инструкции (определяют начало и конец кода Perl);

[name] - имя блока (используется при идентификации блоков, преимущественно при параллельном программировании);

':' или '=' - разделители (с одной стороны являются разделителями между указателями инструкции и именем блока, с другой стороны, обладают рядом дополнительных функциональных особенностей);

[keys] - управляющие ключи (позволяют видоизменять код Perl, заключенный в инструкции, перед тем как его передать интерпретатору на выполнение);

[perl code] - код Perl.


 1 %pl print sqrt(2);
 2    
 3 <%pl print $var; %>
 4 
 5 <%pl= $var; %>
 6 
 7 <%pl
 8    foreach my $key(keys(%ENV)) {
 9       print "$key - $ENV{$key}<br>";
 10    }
 11 %>

Управляющие элементы [name] и [keys] используются не так часто, и с успехом можно обойтись и без них, но их использование бывает весьма удобным.


 1 <%pl:f1 -fork
 2    # Код дочернего процесса
 3    my $f = "Данные дочернего процесса f1";
 4    sleep 1;
 5    return $f;
 6 %>
 7 
 8 <%pl -join=f1
 9    # Результат дочернего процесса f1
 10    print $phl_join{f1};
 11 %>

К стандартным функциям Perl в PHL дополнительно добавлена функция 'include()'), реализованная для возможности сборки документа из нескольких файлов.


 1 %pl include($file_name);
 2    
 3 <%pl include("$file_name", "socket"); %>
 4 
 5 <%pl
 6    my $result = include("$file_name", "open decode");
 7 %>


22423