2010-09-04 44 views
7

Ho fatto ricerche online e ho trovato diversi interessanti moduli/framework Perl, come HTML: Mason, HTML :: Embperl, o il framework MVC Catalyst, ecc, che può permettermi di incorporare Perl all'interno html, analogamente al codice PHP in html.il modo più semplice per incorporare Perl in html

Tuttavia, il mio progetto Perl deve essere caricato su uni server in cui vengono forniti solo privilegi e risorse limitati.

Per esempio, la versione di Apache 1.3.3 & Perl versione 5.8.0 (inferiore ai requisiti del catalizzatore)

ho usato uno script per controllare tutti i moduli Perl installati, solo quei nomi contengono la parola "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 

Ho paura che nessuno di loro possa consentirmi di incorporare Perl direttamente in html.

So che posso usare semplice dichiarazione stampa insieme a "heredoc" per stampare tutto sulla pagina HTML all'interno Perl/CGI, ma mi sa che viola il design paradigma MVC ed è meno flessibile e più complicato da sviluppare, soprattutto perché ora la logica di business è incasinata con markup html.

La mia soluzione attuale è utilizzare jQuery per attivare le richieste AJAX per caricare html in tag specifici dal lato client. In questo caso, Perl viene utilizzato solo per fornire l'accesso ai dati sul lato server, manipolato i dati correlati e fornire risposte formattate JSON alle richieste AJAX.

Mi chiedo c'è un modo migliore per farlo? Riesco a malapena a cambiare lo stato del server e non penso che l'amministratore del sistema sarebbe così generoso da installare altri moduli Perl.

Aggiornato Info:

Il motivo principale per l'inclusione del Perl in HTML è che io sono molto nuovo per la programmazione CGI, e dal momento che io sono più familiarità con PHP e jQuery, mi piacerebbe sapere se c'è è un modo corretto di incorporare Perl direttamente in html, così posso terminare la parte client molto rapidamente e concentrarmi sul lato server.

Di ', qualcosa di simile:

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

Si prega di tenere con la mia poca conoscenza di Perl/CGI e molte grazie per l'aiuto in anticipo.

2 ° Aggiornamento: seguito le istruzioni modello di sito web Toolkit, ho installato questo modulo per conto mio MacBook Pro, ma purtroppo non posso installarlo sul server di di uni a causa di motivi il permesso:

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 

Così, purtroppo ho Sto cercando altri modi ...

Ok, sembra che HTML :: Mason non possa essere installato per lo stesso motivo. Pertanto temo di dover trovare una soluzione solo .pm in modo che non debba installare nulla sull'ambiente perl del server uni ...

+0

Se si desidera installare il modulo Perl a livello globale, è necessario disporre delle autorizzazioni di root –

risposta

3

I moduli Perl non devono essere installati da un amministratore. Possono essere localizzati e scappati da qualsiasi luogo, se punti Perl nella giusta posizione.

Per i moduli che contengono solo il codice Perl (.pm) e nessun codice compilato, questo è facile come caricare i file .pm nella giusta struttura di directory sul tuo sito web.

+0

Penso che tu abbia ragione, ma sono anche sicuro che nessuno dei template di Template Toolkit, o HTML :: Mason, o di qualche altro template/embed Perl può essere installato da solo senza privilegi sufficienti. Ci sono dei moduli basati su .pm che mi consentono di terminare il mio compito? –

+1

Ho paura di non essere un esperto su nessuno di questi moduli.Guardando il tuo secondo aggiornamento sopra, però, ricevi degli errori di autorizzazione perché stai cercando di installare i moduli a livello globale. Non devi farlo. Puoi installarli in un'area locale, se riesci a trovare la magia giusta per configurarlo. Hai provato a copiare manualmente l'albero delle directory contenente i file .pm sul server (dimenticando "make install", ecc.)? –

5

Non incorporare Perl in HTML. Utilizzare un sistema di template come Template Toolkit o HTML :: Template. Possono essere copiati direttamente sul server (se non si utilizza XS stash per TT) o scaricare le porte per questo sistema operativo e decomprimere.

+0

+1 per toolkit modello. –

+0

Mi piacerebbe imparare Template Toolkit o altri sistemi di template, ma ho un tempo limitato per questo piccolo progetto. Sono molto nuovo alla programmazione CGI con Perl, quindi preferirei incorporare Perl in html come PHP, così posso dedicare più tempo a concentrarmi sulla parte della logica di business lato server. –

+1

@ Michael Mao: la sintassi di HTML :: Template è molto semplice. Guarda anche Mojo :: Template - utilizza Perl per i modelli. –

1

Se si dispone dell'accesso al compilatore e dell'accesso a make sul computer host, è possibile utilizzare local::lib per evitare di dover fare qualcosa con il sistema perl.

+0

@singingfish: Sigh ... Questo mi permette solo di scoprire che ci sono così tanti moduli mancanti o troppo vecchi lì ... molto difficile aggiornare tutto (questo è UNI, comunque, cosa posso fare?) :( –

+0

non ha senso, a meno che tu non sia duro su una quota disco, local :: lib dovrebbe funzionare. Mi piace usarlo con cpanminus per rendere le cose ancora più veloci e facili – singingfish

4

Se davvero ha bisogno di per incorporare perl all'interno di HTML allora potrebbe valere la pena dare un'occhiata a Mojo::Template.

Il suo motore minimalista e molto semplice modello di Perl-ish ed è parte del progetto Mojo, il che significa che anche su un impianto incontaminata Perl tutto quello che dovete fare è:

1. Scaricare la fonte. Esempio con git (crea mojo cartella nella directory corrente):

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

2. E utilizzare la libreria Mojo nel programma. Per esempio:

#!/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'); 

con l'esempio modello chiamato 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> 

questo ha funzionato senza intoppi per me su un perl appena compilato 5.12.2.

NB. E non dimenticarti di avere anche il completo framework web Mojo/Mojolicious senza alcun costo aggiuntivo!


responsabilità:

Come altre risposte qui Io in genere evitare di utilizzare moduli Perl HTML incorporati come Mojo::Template, Tenjin, HTML::Embperl et al. La mia preferenza è sempre stata quella di optare per un sistema di modelli più generico come Template Toolkit.

Tuttavia mi si sono mossi sempre più a soluzioni costruttore HTML e talvolta spinta stile moduli template come in questi due SO domanda/risposta:

/I3az/

Problemi correlati