Newsgroup: it.comp.programmare
Titolo: SE CONOSCI IL PERL. PLEASE. AIUTAMI!

Chi di voi conosce l'XML? Credo che ormai lo conosciate tutti!
Ebbene io sto creando un piccolo script in perl che dovrebbe raccogliere i
dati provenienti da  un form, formattarli in XML e mandare il tutto in un
file di testo.
ad esempio, supponiamo che sul form ci cia da inserire un nome, inserisco:
"Antonio"
il form invia l'input allo script che inserisce i tag appropriati di XML e
spedisce poi il tutto in un file di testo chiamato "text.txt"
Il risultato dovrebbe essere:
<dati>
<nome>Antonio</nome>
</dati>
E qui arrivo al succo. Aprite bene gli occhi e la mente! Come tutti voi
sapete un documento XML deve contenere una radice che racchiude i dati.
A questo punto infatti ci sarebbe il bisogno di racchiudere tutti gli input
provenienti dal form con una radice e si dovrebbe ottenere una cosa simile.
<dati>
<nome>Antonio</nome>
</dati>
Facciamo caso che compila il form anche un altro utente che si chiama
Giorgio.
Il risultato finale dovrebbe essere:
<dati>
<nome>Antonio</nome>
<nome>Giorgio</nome>
</dati>
Bene quello di cui avrei bisogo e di creare un altro script adatto a questo
scopo, che legge il conentuto del file "text.txt" ed invia tutti i dati
presenti ad un altro file di testo chiamato ad esempio "rubrica.xml"
racchiudendo il tutto in una radice.
ricapitoliamo:
- Nel form dove viene chiesto il nome inserisco: Antonio
- il form invia il dato inserito allo script "add.cgi"
- lo script "add.cgi" raccoglie il dato, inserisce dei tag xml e lo invia al
file di testo chiamato "text.txt" e si avrà questo risultato:
<nome>Antonio</nome>
- un altro script chiamato ad esempio "refresh.cgi" legge i dati presente
nel file "text.txt" gli racchiude in una radice e li spedisce nel file di
testo: "rubrica.xml" e si avrà questo risultato:
<dati>
<nome>Antonio</nome>
<dati>
il mio problema sta proprio nel fatto di creare questo maledetto script
"refresh.cgi".
se siete piu intelligenti di me e conoscete meglio il perl, spero che potete
consigliarmi delle istruzioni in perl necessarie per raggiungere il mio
scopo.

se siete piu intelligenti di me e conoscete meglio il perl
PERL? Nel senso che questo qui ti funzionerebbe?
#!/usr/local/bin/perl -Tw
(istruzioni in Perl)
?
Allora fai _molto_ prima (IMHO a questi livelli c'e' poca differenza
fra scomodare Perl o Bash): prova quest'altro CGI:
====== cut ======
#!/bin/sh
# Racchiude il file "test.txt" in un marker "<dati>"
cat <<-HEADER
	Content-type: text/html
<!-- Le due righe sopra sono obbligatorie, questo commento no -->
<dati>
HEADER
cat test.txt
cat <<- FOOTER
</dati>
FOOTER
exit 0
====== cut ======
Leonardo
-- 
".signature": bad command or file name

 ha scritto nel messaggio
news:o5elktkh50h89n841...@4ax.com...


scusami  abbi pazienza ti chiedo ancora un ultima, e poi non ti scasso più
;) tu che sei bravo.
lo script che hai usato mi mostra a video i dati racchiusi nel marker, ma se
volessi salvare tutti quanti i dati  in un file? compreso il marker? mi
serve per creare un documento xml copleto. grazie ciao

volessi salvare tutti quanti i dati  in un file? compreso il marker?
Dovresti comunque mostrare qualcosa a video, lo richiedono le specifiche
CGI.
Puoi fare cosi': modifichi le righe con "cat" in:
cat <<- HEADER  > foo.xml
	<XML><!-- Altri headers XML, mi sa che ci vogliono -->
	<!--
	#	Non serve piu' la riga Content-type, visto che
	#	salviamo in un file.
	#	La richiesta arriva da $HTTP_REMOTE_ADDR per conto
	#	dell'utente $HTTP_USER.
	#	Sono ora le $( date ) :-).
	#	Questo testo rimane nel file XML.
	-->
	<dati>
HEADER;
cat test.txt	>> foo.xml
cat <<- FOOTER  >> foo.xml
...la prima ha un solo segno di ridirezione, quindi cancella foo.xml se
lo trova; le altre due aggiungono roba a foo.xml.
Poi devi mandare qualcosa a video. Puoi scegliere fra:
cat <<- REDIRECT
	Location: okay.html
	<HTML><BODY>Je te sto mandand a un'altra pagina</BODY></HTML>
REDIRECT
o
cat <<- HTMLINLINE
	Content-type: text/html
	<HTML>
	Il file e' stato creato con successo, lo trovi
	<A HREF="foo.xml">QUI</A>
	</HTML>
HTMLINLINE
oppure, invece di <HTML>...</HTML>, ci metti:
	$( cat nomefile.html )
e copi un file preesistente, magari lo stesso okay.html.


 ha scritto nel messaggio
news:fuoqktckfjo0i1ljp...@4ax.com...


 wrote in message
fuoqktckfjo0i1ljp...@4ax.com...


deve specificare il percorso di tale files?
Relativamente alla cartella dove si trova il file CGI. Se questo fosse in
	/var/local/httpd/web/sitez/site1/cgi-bin
e tu volessi scrivere in 
	/var/local/httpd/web/pages/site7/foo.xml
potresti usare, indifferentemente:
	../../../pages/site7/foo.xml
o
	/var/local/httpd/web/pages/site7/foo.xml
...la prima forma ti tutela nel caso che tutto l'albero web sia spostato,
per esempio in un clustering, o un backup, o un upgrade o che so io.
Ah - inutile dire che il processo CGI deve avere diritti di scrittura sul
nuovo file.
E, per carita', TAGLIA quando rispondi. LO SO cosa ho scritto io 8-D
