Newsgroup: it.comp.lang.perl
Titolo: Piccolo aiuto in file pl ( menù a discesa )

Salve non so se scrivo nel posto giusto, ma non sapendo dove io chiedo
ugualmente.
Ho un pl che mi crea una form con una tabella.
Devo aggiungere un modulo con menù a discesa dei pagamenti accettati
NON CI RIESCO
A ----------------
<TR>
<TD ALIGN='right'><b>Metodi di pagamento:&nbsp;</b> </TD>
<TD><select size="1" name="Pagamento">
<option value="Bonifico Bancario">Bonifico Bancario</option>
<option value="Bonifico Postale">Bonifico Postale</option>
<option value="Versamento su C/C Postale">Versamento su C/C Postale</option>
<option value="Ricarica Poste Pay">Ricarica Poste Pay</option>
<option value="Vaglia postale">Vaglia postale</option>
<option value="Contante ( ritirato di persona )">Contante ( ritirato di
persona )</option>
<option value="Assegno">Assegno</option>
<option value="Pay Pal">Pay Pal</option>
</select></TD>
</TR>
B---------------
Questo lo inserisco dal punto A al B del codice che ho indicato
Questo è parte del codice e così funziona bene, sa se inserisco questo non
va !!
Dove sbaglio ??
GRAZIE 1000
print "<strong><center><HR width=590><font size=-1 color=blue><B>COMPILARE
LE INFORMAZIONI GENERALI</b></FONT><HR width=590></strong></center>
<TABLE width=590>
A----------------
codice che dovrei aggiungere
B----------------
<TR>
<TD ALIGN='right'><B>Cognome: </B> </TD>
<TD><INPUT NAME='Cognome' SIZE=25> <B>Nome: </B>
<INPUT NAME='Nome' SIZE=25> <BR> </TD>
</TR>
<TR>
<TD ALIGN='right'><B>Indirizzo: </B> </TD>
<TD><INPUT NAME='Indirizzo' SIZE=45><BR></TD>
</TR>
<TR>
<TD ALIGN='right'><B>Città: </B> </TD>
<TD><INPUT NAME='Città' SIZE=25> <B> Prov.: </B>
<INPUT NAME='Provincia' SIZE=2 MAXLENGTH=2> <B> CAP: </B>
<INPUT NAME='CAP' SIZE=5 MAXLENGTH=5><BR></TD>
</TR>
<TR>
<TD ALIGN='right'><B>Paese: </B> </TD>
<TD><INPUT NAME='Stato' SIZE=20 value='Italia'><BR></TD>
</TR>
<TR>
<TD ALIGN='right'><B>C.F / P.iva: </B> </TD>
<TD><INPUT NAME='C.F / P.iva' SIZE=20 ><BR></TD>
</TR>
<TR>
<TD ALIGN='right'><B>Numero di telefono: </B> </TD>
<TD><strong><INPUT NAME='Telefono' SIZE=15><BR></TD>
</TR>
<TR>
<TD ALIGN='right'><B>Numero di Fax: </B> </TD>
<TD><strong><INPUT NAME='Fax' SIZE=15><BR></TD>
</TR>
<TR>
<TD ALIGN='right'><B>E-Mail: </B> </TD>
<TD><INPUT NAME='email' SIZE=30></TD>
</TR>
</TABLE>
<TD><HR width=590></TD>
<TR><TD>
</CENTER>
<CENTER>

 print "<strong><center><HR width=590><font size=-1 color=blue><B>COMPILARE
 > <TD><select size="1" name="Pagamento">
come vedi, tu stai facendo un print "qualcosa"
se però nel qualcosa tu ci metti delle ", il parser non può distinguere 
tra le " di chiusura dell'istruzione e le " dentro al qualcosa.
Hai almeno 3 alternative:
- print "qualcosa che contiene \" qua e là";
ovvero il quoting delle virgolette
- print qq[qualcosa che contiene " qua e là]
ovvero utilizzare un operatore di "virgolette generalizzate" con il 
quale le "virgolette" le scegli tu, in questo caso io ho scelto [] 
(avrei potuto scegliere altri caratterti come || {} ) che diventano le 
mie virgolette personalizzate (cioè i delimitatori della stringa).
- la sintassi HERE DOCUMENT
print <<"FINE";
qualcosa che contiene " qua e là
FINE

 ha scritto nel messaggio
news:d12bke$8vi$1...@news.ngi.it...
Max wrote:




Hai almeno 3 alternative:






OK
ho messo davanti a ogni " la \ e tutto va a meraviglia !!
Grazie ( è la prima volta che provo con un pl ) generalmente lavoricchio con
VB non lavoro siti o altro.
Max

Ciao a tutti, sono nuovo e mi scuso per la domanda banale.
La mia esigenza č quella di dover editare uno script perl, perň quando provo
a modificarlo con kwrite (su fedora core 1) dopo non riesco piů ad
utilizzarlo, devo usare un editor diverso ?
Grazie.
Salvatore.



Strano, molto strano.
Io uso EMACS, vim, e ogni tanto anche qualche altro editor, e non ho
mai avuto problemi.
A occhio KWrite/Kate non dovrebbe rovinarti nulla.
Domande "di rito":
- č uno script che esegui da riga di comando? Un modulo? Uno script
  che esegui da dentro un server Web (CGI e simili)?
- cosa intendi con "non riesco piů ad utilizzarlo"? Quando cerchi di
  eseguirlo che errori ottieni? Chi produce quegli errori?
- hai controllato i permessi? Sia per quanto riguarda l'utente
  proprietario, sia per il bit di lettura e esecuzione.
Facci sapere.
-- 
  dakkar

   proprietario, sia per il bit di lettura e esecuzione.
..si i permessi di esecuzione ci sono, anche perchč sullo stesso script se
non ci faccio alcuna modifica (quindi non entro/esco dall'editor) riesco ad
utilizzarlo senza problemi.
Ancora grazie.
-- 
        Salvatore.

 eseguirlo ottengo una pagina web che riporta un 'Internal Error'
E' con tutta probabilità un problema di shebang, cioè della prima riga 
dello script, quella che contiene il percorso all'interprete. 
Probabilmente il tuo editor aggiunge un carattere "strano" alla fine 
della prima riga, per cui altera il suddetto percorso. Prova a cambiare 
editor (assicurati di salvare il testo in formato unix) e ad ogni modo 
controlla sempre l'err.log di Apache.

 eseguirlo ottengo una pagina web che riporta un 'Internal Error'
OK, quella pagina ti dice solo "qualcosa non va", ad è Apache a
dirtelo, non Perl.
Puoi guardare nei log di Apache per vedere se ci sono altre
informazioni? (tipicamente stanno in /var/log/httpd o /var/log/apache,
non uso FC quindi non so darti indicazioni più precise). In
particolare il log degli errori (error_log o simili) potrebbe
contenere informazioni utili.
Mi viene un dubbio: non è che hai impostato KWrite/Kate per salvare in
UTF-8 o simili, e ti mette un BOM all'inizio del file? Spiego.
Uno script eseguibile, sotto *nix, deve avere le seguenti
caratteristiche (in approssimazione al prim'ordine, poi ci sono le
cose complicate che salto in quanto poco pertinenti):
1. deve avere il bit di esecuzione a 1
2. deve cominciare con i byte 0x21 0x23, ovvero '#!'
3. quello che segue il '!' fino al primo spazio (0x20) deve indicare
   un percoso in cui trovare un eseguibile a cui far interpretare il
   resto
Normalmente quando lavori con file di testo, quello che vedi a schermo
è quello cho finisce sul file. Purché tu lavori in ASCII e basta. Se
tu (o il tuo editor) lavori con altre codifiche, ci sono alcune cose
cui fare attenzione. Una è che l'interprete sappia come leggere i byte
del file per ottenere i caratteri del sorgente (guardati 'perldoc
encoding'). L'altra è che, se usi una codifica Unicode tipo UTF-16 o
anche UTF-8 (con alcuni editor), all'inizio potrebbe venir inserito un
carattere "ZERO WIDTH NO-BREAK SPACE" (U+FEFF), detto anche "Byte
Order Mark" o BOM. L'uso di questo carattere (che come puoi intuire
dal nome è del tutto invisibile) è di far capire al programma che
legge se è stato usato UTF-16 big-endian o UTF-16 little-endian per
salvare il file. Infatti, scambiando i byte della sua rappresentazione
in UTF-16 si ottiene un code-point garantito non assegnato
(U+FFFE). In UTF-8 questo BOM non serve a niente (UTF-8 non dipende
dall'"endianness"), ma qualche editor ce lo mette.
OK, mettendo insieme le due cose, se KWrite/Kate salva lo script in
UTF-8 col BOM, il file non comincia per 0x21 0x23, ma per 0xEF 0xBB
0xBF (credo), e il kernel non lo riconosce come eseguibile, da cui
l'errore.
Quindi:
- guarda i log e cerca di capire cosa dicono
- cerca tra le impostazioni di KWrite/Kate e digli di non mettere il BOM
-- 
  dakkar

 - cerca tra le impostazioni di KWrite/Kate e digli di non mettere il BOM
..perdonami ma non ho ancora capito se lo metto o meno !! :-(
ah grazie anche per i dettagli tecnici davvero interessanti.
Se serve altro sono qui.
-- 
        Salvatore.

 non uso FC quindi non so darti indicazioni più precise).
Su Fedora:
/etc/httpd/logs/error_log

 ..perdonami ma non ho ancora capito se lo metto o meno !! :-(
Dal fatto che Apache riesce ad eseguire il programma (gli errori che
sono nel log sono generati da Perl), direi che non mette alcun
BOM. Anche perché koi-8 non lo prevede.
Nel frattempo mi sono guardato il file (squidGuard.cgi), e a parte
confermare la mia opinione degli sviluppatori, credo che tu abbia
qualche problema nelle impostazioni dell'editor. Prima di tutto,
convincilo ad aprire e salvare in iso-8859-1. Poi, spiegagli che non è
educato troncare le righe di testo, specie a metà di un
commento. Fatto questo, dovresti riuscire a lavorarci.
-- 
  dakkar

 commento. Fatto questo, dovresti riuscire a lavorarci.
.. ti ringrazio tanto per il tuo aiuto ma forse mi sfugge ancora qualcosa,
io ho salvato il file in formato iso-8859-1 ma il risultato non è cambiato !
.. cos'altro posso provare ?
grazie.
-- 
        Salvatore.

 .. cos'altro posso provare ?
Prova ad *aprirlo* come iso-8859-1 (e salvarlo pure), e stai attento
che non ti metta qualche "a capo" automaticamente.
-- 
  dakkar