PDA

Visualizza la versione completa : [PILLOLA] FAQ (domande e risposte) su CGI e PERL


shishii
17-04-2003, 21:59
Ciao,

su suggerimento di FreeManX apro questo tread dedicato alle FAQ cioè alle domande più frequenti poste in genere dai principianti (ma non solo).

Chi volesse contribuire è pregato di seguire questo schema:

- risponde a questo tread.
- Pone la domanda.
- inserisce uno spazio ed una riga di -------------
- da la risposta.

Per eventuali repliche si prega di aprire appositi tread.

Ciao.

ringo_mato
18-04-2003, 09:27
Cos'è un CGI?
-----------------------
CGI significa "Common Gateway Interface" , ed è il metodo con cui un server agisce con database, documenti, e altri programmi inviando o ricevendo dati; questi dati saranno poi visualizzati sul web. In pratica, saper scrivere CGI significa programmare il web per il web. Il linguaggio "principe" per scrivere i CGI è il Perl, anche se è possibile utilizzare altri linguaggi (C su tutti).(Da HTML.it)
Un CGi è uno script che viene interpretato da un apposito intreprete PERL o SH.

Estensione .pl o .cgi?
--------------------------
Dipende dalla configurazione del webserver se supporta file CGI.
l'estensione del file .pl o .cgi non è assolutamente vicolante all'interpretazione dello script.
perl mio_script.pl o perl mio_script.cgi sono la stessa cosa.

FreeManX
18-04-2003, 20:08
Posso fare i miei CGI con C?
-------------------------------------
Si certo, se sei cosi masochistico :gren:
La realizzazione di CGI realizzati in linguaggio C presenta svantaggi e vantaggi, io rispetto al Perl vedo solo molti svantaggi. Ma cominciamo con il vantaggio: codice molto piu' performante e eseguito piu' velocemente.
Gli svantaggi, diversi:
1) meno flessibilita' nella realizzazione degli script: una su tutte, il fatto che gli array debbano avere una misura ben predefinita al momento della compilazione complica non di poco la cosa, tipo, un campo TEXT, a priori non sai la lungezza, e dimensionare un array da molti caratteri significa molto spazio in memoria
2) la compilazione, questo forse e la nota piu' dolente, per compilarlo devi conoscere esattamente il sistema su cui andrà in esecuzione, oppure poterlo compilare direttamente su quel sistema, questo non e' sempre possibile almeno che tu non abbia un server di tua proprieta.
3) con le applicazioni web si ha spesso bisogno di trattare linee di testo, e questo per C (a mio avviso) e impossibile almeno che tu non voglia scrivere quintalate di codice per operazioni semplici, vantaggio che il Perl ha!.

Per ora non mi viene in mente altro! :) Io consiglio per i vostri script Perl

Fonte: FreeManX ;)

shishii
18-04-2003, 22:28
Come faccio ad inserire codice html in uno script?
------------------------
Esistono tre metodi:

METODO NORMALE:
print "<div align=\"center\">Ciao</div>\n";
la funzione è quindi print "...\n"; . Presenta lo svantaggio che quando si devono usare le " bisogna necessariamente farle precedere da carattere di escape \ altrimenti si avrà un errore.

SINTASSI HERE DOCUMENT:
print <<"TESTO";
<div align="center">
Ciao
</div>
TESTO

Come si vede in questo caso non c'è bisogno di uare caratteri di escape e il codice html si può formattare. Bisogna fare attenzione a che l'iniziatore e il terminatore costituiti dalla parola TESTO siano identici e che il terminatore sia perfettamente attaccato al bordo sinistro e NON abbia spazi dopo, altrimenti si avrà un errore.

QUOTING:
print qq(
<div align="center">
Ciao.
</div>
);

il meccanismo qq() mette automaticamente tra " il contenuto. E' molto comodo perchè non si ha bisogno di caratteri di escape e non ci sono problemi di allineamento, però è meno performante a causa del fatto che l'interprete deve scorrere il codice carattere per carattere fino a che non trova la ) di chiusura.

A voi la scelta.

FreeManX
19-04-2003, 12:05
Che differenza passa tra ' (singolo apice), " (doppio apice) e ` (apice inverso)
-------------------------------------
Singolo apice ( ' ): Quanto usi questo apice per definire delle stringe, il contenuto verrà trattato come una stringa normale, senza analizzare caratteri speciali come $, @, etc.
Esempio:


#....

$dati = 4;
print 'che cosa e: $dati';

#....

Output:
che cosa e: $dati



Doppio apice ( " ): Quando si usa il doppio apice, il contenuto verrà "interpretato", vale a dire, i caratteri speciali, verranno trattati come caratteri speciali, se presente una variabile, il contenuto della variabile il quel punto verrà sostituita col suo valore.
Esempio:


#....

$dati = 4;
print "che cosa e: $dati";

#....

Output:
che cosa e: 4



Apice inverso ( ` ): Questo e' un apice, per cosi dire particolare, non ha il compito di incapsulare dei dati, ma equivale alla chiama di sistema [color=blu]system(), infatti cio' che verra inserito tra apici inversi, verra trattato come un comando di sistema, è verrà eseguito.[/code].
Esempio:


#....

@RIsultatoComando = `ls -laF`;

foreach (@RIsultatoComando) {
print $_."\n";
}

#....

Output:

Visualizzera l'output del comando eseguito, in questo caso ls, percio' la lista delle directory!





:ciauz:

Fonte: FreeManX

uMoR
30-08-2003, 01:27
mettiamo caso che stiamo creando un'interfaccia web che esegua un netstat per vedere cosa succede sul server, o un ps aux

certo se noi stampiamo in html l'output l'allineamento viene uno schifo, per cui ecco una mini-pillola per come "formattare" l'output dei programmi in maniera intelligente (e leggibile) come se fossero eseguiti direttamente dalla consolle :)


-------------------[ Inizio

#!/usr/bin/perl
print "Content-type: text/html\n\n";
print qq(
<font face="Courier New, Courier, mono">

Connessioni attive:

);
@netstat=`netstat`;
$spazio="";
foreach $each (@netstat) {
$each =~ s/\n/
/;
$each =~ s/\s/$spazio/g;
print "$each\n";
}
print qq(
</font>
</body>
</html>
);

-------------------[ Fine

Tradotto in italiano:
@netstat=`netstat`; -> metto l'output di netstat nell'array @netstat
$spazio... -> assegno a questa variabile il valore del codice dello spazio in html =)
$each =~ s/\n/
/; -> sostituisco tutti gli a capo con il relativo a capo valido in html
$each =~ s/\s/$spazio/g; -> sostituisco tutti gli spazi con la variabile $spazio, definita sopra

alla prossima pillola =)

shishii
30-08-2003, 23:21
Ciao,

Cosa sono le variabili package, le globali, le lessicali... ecc. in Perl e come si usano?

------------

Qui la chiarissima risposta:

http://www.perl.it/documenti/articoli/namespaces/index.html

FreeManX
05-09-2003, 20:04
Inviare Dati in Email (Ho creato un form mah...)

Molte di voi chiedono aiuto approposito di questo argomento. Ecco una sintetita risposta valida per tutti.

Avete creato il vostro form, e volete che i dati vengano recapitati nella vostra Email?

Andata su http://www.shishii.com nella sezione CGI trovere il FormMail in italiano, notissimo script che esegue questa funzione, troverete anche una guida in italiano. (Tutto fornito dal nostro carissimo moderatore shishii ... urk ke lekkinata :D )
Potente comunque usare altri script simili. (Visitate il Topic "Risorse" per trovare siti su cui cercare)

Appena avete lo script lo installate (seguendo la mia guida all'installazione degli script nel topic "Pillole") e lo configurate (seguendo la guida di shishii).

Fatte queste operazioni siete pronti per ricevere in email il vostro form web.

bye bye

Loading