Mailing List del Fortunae LUG ============================= mi e` stata commissionata questa cosa, fare un motore di ricerca per il sito www.gnam-gnam.it, e` un sito che gira su iis, php non c`e`, c`e` solo asp e database access, il problema era fare questa cosa usando robe open, nell`ftp c`era una dir cgi-bin, ho provato a metterci uno script in perl e ho visto che funzionava, quindi ho optato per il perl, non avevo mai scritto un cgi in perl, ora, siccome non potevo appoggiarmi al database access per motivi etici, ho optato per dei semplici file di testo, quindi ho 4 file di testo con dentro l`elenco dei ristoranti, pizzerie, trattorie e agriturismi, altri 5 file di testo per la cima e il fondo della pagina, dato l`inizio pagina cambia a seconda della sezione, pero` in perl non ho trovato una funzione tipo include del php ho semplicemente aperto il file e printato print "Content-type:text/html\n\n"; #dichiara il tipo, il perl ha #bisogno #per printare roba html @campi = split(/&/,$ENV{'QUERY_STRING'}); #prende le variabili dall'url #con get #il perl usa sto metodo qua @var= split(/=/,@campi[0]); #separa le variabili @cat=split(/=/,@campi[1]); #prese dalla stringa dell'url #questo si capisce meglio #guardando l`url #che viene passato allo #script #in perl deve essere fatto #cosi` if(@var[0] eq "cat") #guarda se c'e' prima la categoria { #o il nome per la ricerca $cat=@var[1]; #e le mette nell'ordine che #serve $nome=@cat[1]; } else { $cat=@cat[1]; $nome=@var[1]; } #siccome al perl, se gli #passi due variabili #non e` come in php che gli #dici il nome della #variabile e lui capisce, #devi fare sta cosa #per capire quale roba #prendere #vabbe`, non si capisce... #andate qua #http://www.html.it/cgi/cgi_11.htm #che spiega meglio sta #cosa... if($cat eq "ristoranti.txt") #controlla quale categoria e' #stata selezionata { #e include gli header per #quella categoria open (HEAD, "<include/ristoranti.head"); #apre il file per i #ristoranti print <HEAD>; #lo printa close HEAD; #e lo chiude } elsif($cat eq "agriturismi.txt") #come sopra... { open (HEAD, "<include/agriturismi.head"); print <HEAD>; close HEAD; } elsif($cat eq "pizzerie.txt") { open (HEAD, "<include/pizzerie.head"); print <HEAD>; close HEAD; } elsif($cat eq "trattorie.txt") { open (HEAD, "<include/trattorie.head"); print <HEAD>; close HEAD; } open (FILE, "<database/$cat"); #apre il "database" della categoria #selezionata @array= <FILE>; #mette tutto in un array close FILE; #chiude il file $nome=~ s/\+/ \.\*/; #sostituisce tutti i + che erano nella #stringa #dell get con uno spazio #in piu' controlla se prima e dopo del #non ci sia almeno uno spazio #per evitare che trovi il nome #all'interno di #un'altra parola #es. "bar" dentro "bartolo", questo non #vogliamo che succeda $elementi=@array; #contra quanti elementi ci sono #nell'array print "La ricerca ha dato i seguenti risultati :<br>"; print "<hr>"; for ($i=0; $i<$elementi; $i++) #inizia il ciclo per la ricerca del nome #dentro l'array { if (@array[$i] =~ m/$nome/i) #contronta se l'elemento #dell'array e' #uguale a nome, /i e' per il case #insensitive { push(@result, "@array[$i]" . "<br>"); #se e' uguale mette #quell'elemento #dentro un altro array } #e aggiunge un <br> per il #ritorno a capo } if(@result) #se l'array risultante contiene #qualcosa { print @result; #allora printa tutto l'array } else { print "nessuna voce trovata..."; #senno scrive "nessuna voce #trovata" } open (FOOT, "<include/foot.inc"); #apre il file per l'include del #footer della pagina print <FOOT>; #lo printa close FOOT; #e lo chiude #se avete migliorie da fare, fate pure... bau -- "se dio fosse cosi` potente da aver creato il mondo senza far nulla per correggere i problemi, perche` mai dovremo adorarlo? non sarebbe piu` ragionevole processarlo?" Richard Stallman