Модуль HTML:
Для обработки HTML-документов, содержащих инструкции с кодом Perl
|
Ключи
Ключи позволяют видоизменять код perl, размещенный в инструкциях.
Их можно указывать в полном или в сокращенном виде. [keys] : • Ключи '
|
1 | 1. Текст HTML<br> |
2 | <%pl -end |
3 | print "2. Первый end<br>"; |
4 | %> |
5 | 3. Текст HTML<br> |
6 | |
7 | <%pl -begin |
8 | print "4. Первый begin<br>"; |
9 | %> |
10 | 5. Текст HTML<br> |
11 | |
12 | <%pl -end |
13 | print "6. Второй end<br>"; |
14 | %> |
15 | 7. Текст HTML<br> |
16 | |
17 | <%pl -bg |
18 | print "8. Второй begin<br>"; |
19 | %> |
20 | 9. Текст HTML<br> |
При использовании данного ключа, отпадает необходимость ограничивать код perl указателями инструкций. Анализатор будет воспринимать весь текст документа, как Perl-код.
1 | %pl -pl |
2 | |
3 | use CGI; |
4 | |
5 | print "Content-type: text/html; charset=utf-8\n\n"; |
6 | |
7 | my $test = "Текст"; |
8 | my $q = new CGI; |
9 | |
10 | print $q -> h4("$test из модуля CGI"); |
11 | print ("<H4>$test из Phl</H4>"); |
Ключ позволяет выполнить код, заключенный внутри инструкции, в процессе работы анализатора (перед его выполнением
Например, попробуем с помощью данного ключа изменить указатели '
1 | <%pl -eval |
2 | $phl{lt} = '['; |
3 | $phl{rt} = ']'; |
4 | $phl{ln} = '~'; |
5 | $phl{sh} = ''; |
6 | %> |
Указатели инструкций приобрели совершенно другой вид.
Теперь инструкцию можно написать таким вот образом:
1 | [= |
2 | Многострочный блок |
3 | ] |
или таким
1 | [ print "Однострочный блок" ] |
или таким
1 | ~ print "Линейная инструкция" |
Код, заключенный внутри инструкции, выполняется в параллельном дочернем процессе, созданном в результате запуска
1 | <%pl:f1 -fork |
2 | # Код дочернего процесса с именем f1 |
3 | my $f; |
4 | sleep 1; # Параллельная обработка данных процессом f1 |
5 | return $f; |
6 | %> |
Код, заключенный внутри инструкции, выполняется в параллельном потоке ("нити", "ветке" процесса), созданном стандартным модулем '
1 | <%pl:t1 -thread |
2 | # Код нити с именем t1 |
3 | my $t; |
4 | sleep 1; # Параллельная обработка данных нитью t1 |
5 | return $t; |
6 | %> |
Ключ дает возможность получить результаты выполнения дочерних процессов и нитей.
Результаты размещаются в хэше
1 | <%pl -join |
2 | # Результаты выполнения параллельных дочерних процессов и потоков |
3 | foreach my $key(keys(%phl_join)) { |
4 | if (ref $phl_join{$key}) { # если значение - ссылка |
5 | my @result = @{$phl_join{$key}}; |
6 | print "процесс '$key' - результат первого аргумента '$result[0]'"; |
7 | } else { |
8 | print "процесс '$key' - результат '$phl_join{$key}'"; |
9 | } |
10 | } |
11 | %> |
При желании можно определить свои собственные (дополнительные) ключи или переопределить существующие. Это реализуется с помощью специально оформленных модулей.
Так, к примеру, с помощью модуля '
Пример:
1 | %pl -ev use HTML::Phl::Utilit; |
2 | |
3 | %pl -import |