ePrometeusCorsoLinuxLinux
testi articoli
Testi Articoli  Download
Home | Introduzione | Panoramica | Form | Analisi Log | 
CorsoJava è ora Video! Free for all!
Clicca Qui!
Tutorial Perl
FORM IN PERL
INVIARE MAIL DAL WEB
RICHIAMI DI FORM E CGI
STRUTTURA DEL PROGRAMMA
IL PROGRAMMA PRINCIPALE
DECODIFICA DELL'INPUT
VERIFICA DELL'INPUT E INVIO DI UNA MAIL


<<< FORM IN PERL >>>

Il Perl è il linguaggio più usato per questo tipo di applicazioni. Come spesso succede il successo di un linguaggio è dovuto ad una certa concomitanza di fattori. Il Perl è universalmente disponibile gratuitamente, è particolarmente versato per l'elaborazione di testo (operazione fondamentale per programmi che elaborano pagine HTML), ha buone capacità di interfacciamento a database. Bisogna anche tener presente che è molto diffuso in ambiente Unix dove è nato il Web e girano tuttora la maggior parte dei server Web. Il linguaggio è molto portabile: ne esistono versioni anche per Windows e NT, oltre che per OS/2, VMS e tanti altri, e molti script sviluppati sotto Unix girano senza o con poche modifiche sugli gli altri sistemi operativi.

Sin dalla versione 2.0 l'HTML prevede un meccanismo che consente di inserire moduli nelle pagine Web, le cosiddette “form”. Utilizzando i tag <FORM>, <INPUT>, <SELECT> e qualche altro (vedi figura 1) è possibile far comparire sulle pagina Web caselle di testo, bottoni, selezioni ed altri elementi tipici delle interfacce grafiche. L'utente può interagire con questi elementi e immettere informazioni. Tuttavia una pagina HTML così arricchita è del tutto inutile se non abbiamo modo di utilizzare le informazioni fornite dall'utente.



Figura 1



Per elaborare i dati immessi in una form serve un programma, che risiede sulla stessa macchina del server Web, e che viene invocato dal server quando l'utente effettua una “submit”, solitamente premendo un bottone. Per trasferire i dati dalla form al programma di elaborazione dei dati il server Web può utilizzare vari metodi. Il metodo “standard” è il protocollo CGI (Common Gateway Interface).

Questo protocollo è stato implementato sin dai primi server Web che la storia ricordi (Cern e NCSA) ed è tuttora adottato dalla stragrande maggioranza dei Web Server in uso. Molti server Web prevedono anche altri metodi di interazione con i programmi, che sono più efficienti, ma che tendono ad essere proprietari e specifici solo di certi Web Server. Comunque per applicazioni semplici il protocollo CGI è più che sufficiente.

Il discorso cambia quando si gestisce un sistema come un motore di ricerca che deve gestire anche centinaia di richieste al secondo. In questi casi l'overhead indotto dal protocollo CGI è eccessivo. Per la verità l'overhead non è dovuto tanto al protocollo CGI in se stesso, che in fin dei conti è solo uno standard per passare informazioni. Il problema è generalmente che per servire una richiesta si deve mandare in esecuzione un programma. Si perde tempo e si occupa memoria caricando il programma e facendo partire un nuovo processo. Poi se il programma è scritto in Perl o in altri linguaggi interpretati c'è una fase di inizializzazione e una occupazione di memoria che è di qualche centinaio di kilobyte. Quando si hanno centinaia di Perl attivi contemporaneamente la differenza rispetto ad un programmino in C di dieci kilobyte si sente!

Ci sono diverse tecniche per affrontare questi problemi, che possono benissimo essere usate contemporaneamente. Comunque ne accenniamo soltanto in quanto esulano dagli scopi del nostro articolo:

  • Riscrivere in C/C++ gli script (presumibilmente quando ormai si sono stabilizzati - il Perl è un ottimo strumento di prototipazione).

  • Compilare il Perl (è possibile farlo solo da pochissimo tempo e il compilatore è limitato ma qualcosa già si muove in questa direzione).

  • Attivare una sola istanza dell'interprete Perl insieme al server Web e fargli precompilare gli script. Alcuni Web server consentono questa tecnica. Il Perl pur essendo un interprete precompila gli script prima di eseguirli e la velocità è più che rispettabile (inferiore certo al semplice C ma comunque piuttosto buona). Per questo occorre usare il mod_perl.

ePrometeus s.r.l. - Web Software House & Open Source System Integrator
MILANO - SAN BENEDETTO DEL TRONTO(AP)
Contatti: info@eprometeus.com