Задача модуля 'HTML::Phl' - выбрать из текстового документа формата HTML, размещенный в нем особым образом perl-код,
выполнить кое-какие манипуляции над ним и кодом HTML, объединить полученное в единый код perl
и "скормить" всё это 'eval', получая на выходе сгенерированную HTML-страницу, воспроизводимую веб-браузером.
В HTML документе perl-код размещается с помощью своеобразных инструкций.
У каждой такой инструкции есть начало и конец, позволяющие идентифицировать код perl в документе.
В поисках инструкций анализатор модуля обходит построчно текстовой файл HTML-документа, выделяя в нем код perl и html.
По окончании работы анализатора, HTML-код преобразуется в perl-код и объединяется с ранее выделенным кодом perl из инструкций. В результате, получаем документ формата perl.
Пример:
1 | <HTML> |
2 | <HEAD> |
3 | <META content="text/html; charset=UTF-8" http-equiv="Content-Type"> |
4 | <TITLE>Пример PHL</TITLE> |
5 | </HEAD> |
6 | |
7 | %pl use CGI; |
8 | |
9 | <%pl |
10 | my $q = new CGI; |
11 | my $test_1 = $q -> h4("Текст из модуля CGI.pm"); |
12 | my $test_2 = "<h4>Текст из файла *.phl</h4>"; |
13 | %> |
14 | |
15 | <%pl= "$test_1", "$test_2"; %> |
16 | |
17 | </HTML> |
В результате работы анализатора PHL, текстовой блок в вышеуказанном примере преобразуется в следующий фрагмент:
1 | print <<'[HTML]'; |
2 | <HTML> |
3 | <HEAD> |
4 | <META content="text/html; charset=UTF-8" http-equiv="Content-Type"> |
5 | <TITLE>Пример PHL</TITLE> |
6 | </HEAD> |
7 | |
8 | [HTML] |
9 | use CGI; |
10 | print <<'[HTML]'; |
11 | |
12 | [HTML] |
13 | my $q = new CGI; |
14 | my $test_1 = $q -> h4("Текст из модуля CGI.pm"); |
15 | my $test_2 = "<h4>Текст из файла *.phl</h4>"; |
16 | print <<'[HTML]'; |
17 | |
18 | [HTML] |
19 | print("$test_1", "$test_2"); |
20 | |
21 | print <<'[HTML]'; |
22 | |
23 | </HTML> |
24 | [HTML] |
▼
Результат
Пример PHL
Текст из модуля CGI.pm
Текст из файла *.phl