самый простой способ встраивания Perl в html

Я исследовал онлайн и нашел несколько интересных модулей/фреймворков Perl, таких как HTML:Mason, HTML::Embperl или MVC Catalyst framework и т. д., которые позволяют мне вставлять Perl внутри html, аналогично PHP-коду внутри html.

однако мой проект Perl должен быть загружен на сервер uni, где предоставляются только ограниченные привилегии и ресурсы.

например, Apache версии 1.3.3 и Perl версии 5.8.0 (ниже, чем Catalyst требования)

я использовал скрипт для проверки всех установленных модулей Perl, только эти имена содержат слово "html":

HTML::HeadParser    2.17
HTML::Entities  1.23
HTML::Filter    2.09
HTML::LinkExtor 1.31
HTML::Parser    3.26
HTML::PullParser    2.06
HTML::TokeParser    2.24
HTML::Tagset    3.03
HTML::Form  0.03

Я боюсь, что никто из них не может позволить мне вставлять Perl непосредственно в html.

Я знаю, что могу использовать простой оператор печати вместе с" heredoc " для печати все на html странице внутри Perl / CGI, но я считаю, что это нарушает парадигму дизайна MVC и является менее гибким и более сложным в разработке, главным образом потому, что теперь бизнес-логика перепутана с html-разметками.

мое текущее решение-использовать jQuery для запуска AJAX-запросов для загрузки html в определенные теги со стороны клиента. Таким образом, в этом случае Perl используется только для предоставления доступа к данным на стороне сервера, манипулирования связанными данными и предоставления ответов в формате JSON на запросы AJAX.

интересно, есть ли лучший способ сделать это? Я вряд ли могу изменить статус сервера, и я не думаю, что системный администратор будет настолько щедрым установить любые другие модули Perl.

Обновлена Информация:

основная причина внедрения Perl в html заключается в том, что я очень новичок в программировании CGI, и поскольку я более знаком с PHP и jQuery, я хотел бы знать, есть ли правильный способ встроить Perl непосредственно в html, поэтому я могу очень быстро закончить клиентскую часть и сосредоточиться на стороне сервера.

говорят, что-то вроде этого:

<div id='user_status'>Your last visit was :[% getLastVisitDateTime($userId)%]</div>

пожалуйста, потерпите с моим маленьким знание Perl / CGI и большое спасибо за помощь заранее.

Обновлено 2: Следуя инструкциям на веб-сайте Template Toolkit, я установил этот модуль на свой собственный MacBook Pro, но, к сожалению, я не могу установить его на сервер uni по причине разрешения:

Warning: You do not have permissions to install into
 /usr/lib/perl5/site_perl/5.8.0/i386-linux-thread-multi 
at /usr/lib/perl5/5.8.0/ExtUtils/Install.pm line 84.
mkdir /usr/lib/perl5/site_perl/5.8.0/i386-linux-thread-
multi/auto/Template: Permission denied at /usr/lib/perl5/
5.8.0/ExtUtils/Install.pm line 137
make: *** [pure_site_install] Error 255

поэтому, к сожалению, я сейчас ищу другие способы...

хорошо, кажется, HTML:: Mason не может быть установлен по той же причине. Поэтому я боюсь, что я должен найти .pm только решение, так что мне не нужно ничего устанавливать в среду perl сервера uni...

4 ответов


модули Perl не должны устанавливаться администратором. Они могут быть расположены и работать из любого места, если вы укажете Perl в правильном месте.

для модулей, содержащих только код Perl (.pm) и никакого скомпилированного кода, это так же просто, как загрузка .pm файлы в правильной структуре каталогов на ваш сайт.


не вставляйте Perl в HTML. Используйте систему шаблонов, например Template Toolkit или HTML::Template. Их можно напрямую скопировать на сервер (если вы не используете XS stash для TT) или загрузить порты для этой ОС и распаковать.


если вы действительно нужно чтобы встроить perl в HTML, тогда, возможно, стоит взглянуть на Mojo::Template.

его минималистичный и очень простой Perl-ish шаблон двигателя и является частью Mojo проект, что означает, что даже на нетронутой установке Perl все, что вам нужно сделать, это:

1. Скачать источник. пример использования git (creates Моджо в текущем directory):

git clone git://github.com/kraih/mojo.git

2. И используйте библиотеку Mojo в своей программе. например:

#!/usr/bin/env perl
use strict;
use warnings;

use lib './mojo/lib';    # git clone here
use Mojo::Template;
my $mt = Mojo::Template->new;

print $mt->render_file( 'simple_template.html', 'Title text', 'Header text' );

С примером шаблона под названием simple_template.HTML-код:

<html>
% my ($title, $header) = @_;
<head>
    <title><%= $title %></title>
</head>
<body>
    <h1><%= $header %></h1>
    <ul>
        <% for my $i (1..5) { %>
            <li>item <%= $i %></li>
        <% } %>
    </ul>
</body>
</html>

это работало без заминок для меня на недавно составленном perl 5.12.2.

NB. И не забывайте, что вы также получите полный Mojo / Mojolicious web framework без дополнительных стоимость!


отказ от ответственности:

как и другие ответы здесь, я обычно избегаю использования встроенных модулей Perl HTML, таких как Mojo::Template, Tenjin, HTML::Embperl et al. Мое предпочтение всегда было идти на более общую систему шаблонов, такую как Template Toolkit.

однако я все больше и больше перемещаюсь в решения HTML builder, а иногда и push стиль шаблоны модулей, как в этих двух так Вопрос / ответ:

/ I3az/


Если у вас есть доступ к компилятору и доступ к make на главной машине, то вы можете использовать local:: lib чтобы абвоид имел какое-либо отношение к системе perl.