самый простой способ встраивания 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 стиль шаблоны модулей, как в этих двух так Вопрос / ответ:
- CL-кто-как HTML шаблоны для других языков?
- есть ли небольшой синтаксический анализатор XML Perl, который может заменить CGI.функции генерации HTML pm?
/ I3az/
Если у вас есть доступ к компилятору и доступ к make на главной машине, то вы можете использовать local:: lib чтобы абвоид имел какое-либо отношение к системе perl.