PDA

Visualizza la versione completa : Perl/cgi...installazione e istruzioni


XVincentX
24-12-2004, 11:42
Buongiorno a tutti!
Sono il noob di turno, ho letto le prime due pagine di questo forum sperando di non fare la solita domanda che fanno tutti i noob.
Per prima cosa, se non erro perl è open source. Quest'ultimo si installa come il php? Dove posso prendere il pacchetto zip per Windows (IIS) ed installarlo?
Altra domanda.
Dove è che potrei trovare la sintassi di basi di questo linguaggio?
Cosa cambia se uno script perl è un.cgi o se è un .exe?
Se ho capito bene se lo script è .cgi il erver ha bisogno dell'interprete, se lo converto lo posso uploadare dove voglio senza problemi...giusto?
Grazie per le risposte

Mich_
24-12-2004, 12:15
Inizio a rispondere io, ma alcune cose che chiedi non le conosco.

Anzitutto uno script non puo` essere un .exe .
Uno script viene interpretato (ha necessita` di un interprete del linguaggio), mentre un .exe e` un programma compilato e completo.
Pero` uno script puo` essere interpretato su computer diversi, mentre un .exe e` compilato solo per una determinata piattaforma.

Esiste un compilatore Perl (credo si chiami perl2exe), ma non lo ho mai usato.

Nota che nel forum esiste la funzione ricerca (bottone in alto a destra) che ti puo` essere utile per cercare info di thread vecchi.

Un tutorial Perl e` linkato nelle prime pagine di HTML.it, un altro lo trovi nel sito di shishii (il moderatore di questo forum).
Un reference lo puoi trovare anche a questo link (http://www.perldoc.com/perl5.6.1/pod/perl.html).

Nota che il Perl e` un linguaggio (di scripting), mentre CGI (Common Gateway Interface) e` un sistema di interfaccia fra due computer (server e client) che gira sul Web, alla pari di PHP o ASP.
Al 99% i CGI vengono sviluappati in Perl, ma si puo` realizzarli con qualsiasi linguaggio (ad esempio C/C++).

Per cose standard il PHP (che ha un linguaggio in qualche modo simile al Perl) puo' essere piu` semplice da realizzare, mentre per cose particolari il CGI e` insostitubile.

Spero di aver risposto a molti quesiti; con i link che ti ho indicato puoi trovare altre risposte.
Ma se hai altri problemi fatti vivo nuovamente: qui ci sono altre persone molto piu` esperte di me nei CGI.

XVincentX
24-12-2004, 12:22
Credo allora di non aver capito.
Leggendo qualche istrunzione ho letto che
asd.pl e asd.cgi è la stessa cosa, tu invece mi dici che sono due cose diverse...devo aver frainteso l'argomento.
Eppure su alcuni webserver vedo avviare script .exe... insomma non ho capito! help!

shishii
24-12-2004, 15:52
Allora...

CGI è un protocollo di comunicazione tra i webserver (IIS apache, ecc) e degli eseguibili. In pratica tramite quel protocollo è possibile per il webserver ricevere una richiesta http, girarla all'eseguibile, ottenere una risposta e girarla al client.

Gli eseguibili di cui sopra, detti cgi, possono essere script scritti in Perl, Bash, Python, Php, ecc., oppure dei file compilati scritti in C, C++, Pascal, ecc.

Al webserver non interessa nulla se sono script o compilati, l'importante è che siano eseguibili e rispettino il protocollo.

Le estensioni di un cgi possono essere molte:
.pl indica un eseguibile scritto in Perl
.cgi indica un qualunque tipo di cgi script e compilati
.exe indica un file compilato ed è riconosciuto solo da windows.

L'interprete di perl per windows lo trovi su www.activestate.com

XVincentX
25-12-2004, 13:35
Grazie, ora l'argomento mi è più chiaro ma mi tornano ancora dei dubbi.
Uno script cgi prende una richiesta http e la gira all'eseguibile.
Non riesco nemmeno a scrivere, cancello in continuazione le mie righe :dhò:
Ancora devo capire bene cosa è il cgi.
Le sue utilità? Potenzialità?
Mettiamo il caso del php, come si crea il cgi?
Può eseguire tutti i file exe?
Spero che le domande siano chiare, in un certo senso nemmeno io ho capito cosa chideo

shishii
25-12-2004, 17:43
no...

il client manda una richiesta al webserver tramite una pagina in cui, ad esempio, c'è un form che ha questo codice html:



<form action="http://www.ciccio.com/cgi-bin/script.pl" method="POST" ...>



quando clicchi sul pulsante submit il webserver riceve la richiesta e sa che deve rivolgerla allo script eseguibile indicato in action.

Gli gira la richiesta, lo script la elabora, fa le sue operazioni e restituisce al webserver una risposta sotto forma di codice html.

Il webserver gira la risposta al client.

Per quanto riguarda le potenzialità lascio a te immaginare quante cose si possono fare potendo elaborare un input e restituire un output di tua scelta.

PHP è un caso a parte, infatti pur essendo possibile, in genere non viene usato come CGI, infatti gli script php NON sono eseguibili. Il principio di funzioanmento è più complesso e delicato, ti basti sapere che l'interprete PHP è integrato in apache, quindi l'elaborazione avviene all'interno e che per il resto uno script si comporta COME un CGI anche se non lo è. Se vuoi sapere di più su php rivolgiti all'apposito forum.

Tramite CGI possono essere eseguiti tutti gli eseguibili (script e compilati) che sono scritti in modo da ricevere un input tramite i metodi http POST o GET e sono in grado di restituire unh output con il MIME text/html.

XVincentX
27-12-2004, 18:17
Si fin qui ci sono, quello che non capisco è la struttura del file .cgi
In pratica cosa ci devo scrivere dentro?
Il file exe da richiamare come deve essere strutturato?
Grazie per la pazienza nel risolvere i miei dubbi

shishii
27-12-2004, 19:28
quello che ci devi scrivere dipende dal linguaggio e da quello che ci devi fare.

Ma conosci la differenza tra un eseguibile script e un eseguibile binario?

Se l'argomento CGI ti interessa devi cominciare a studiare uno tra i linguaggi di programmazione che ti sono stati suggeriti.

XVincentX
15-01-2005, 13:18
Capisco, bhe io stavo provando un po con il c++, però io stavo pensando, il programma in C++ deve avere una parte di codice apposta per ricevere le connessioni Cgi non so se mi sono spiegato. Mettiamo il caso che io in c++ ho creato il word, ma per esempio alla fine del programma devo scrivere qualcosa tipo

abilite cgi.perl e altre cose che non conosco...
Insoma PREDISPORLO per la ricezione (non so se il termine è corretto) del cgi...non so se mi spiego.
A questo punto, (sperando di non sparare papere), per fare un cgi (che, mi spiace, non ho capito ancora bene cosa sia) si deve usare o perl, o php o c++, o altri ancora, giusto?
Il CGI è un particolare script, che può essere scritto in vari linguaggi, per richiamare un file exe?
Scusatemi ancora vi sto facendo venire i mal di testa

shishii
15-01-2005, 15:02
CGI è un protocollo di comunicazione tra webserver e un eseguibile. Vengono chiamati cgi degli eseguibili che sono in grado di dialogare con un webserver.

Il protocollo è molto semplice: il webserver setta alcune variabili d'ambiente, tramite cui passa i dati, e poi lancia l'eseguibile, che per ricevere i dati legge le suddette variabili d'ambiente, fa le sue elaborazioni e restituisce i risultati con un MIME compatibile con un webserver.

Non so come si faccia in C++ ma in Perl ad esempio i dati si ricevono con:



read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
@pairs = split(/&/, $buffer);
foreach $pair (@pairs) {
($name, $value) = split(/=/, $pair);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$FORM{$name} = $value;
}


dove $ENV{'CONTENT_LENGTH'} è la variabile d'ambiente ove è indicata la dimensione dell'input, STDIN è filehandle dove è l'input

per riestituire l'output si fa ad esempio così:

print "Content-type: text/html\n\n";
# abbiamo settato il MIME
print "<html>Ciao</html>";
# mandiamo il risultato.

Loading