Tecnologie lato Server: CGI e Perl © 2005 Stefano Clemente I lucidi sono in parte realizzati con materiale tratto dal libro di testo adottato tradotto.

Slides:



Advertisements
Presentazioni simili
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità F1 Primi programmi.
Advertisements

Introduzione al linguaggio C++
Active Server Pages ed ADO. Scrivere ASP Le pagine ASP possono contenere codice HTML o XML Le parti del documento che racchiudono codice script vanno.
Shell: variabili di sistema PATH HOME USER PWD SHELL HOSTNAME HOSTTYPE Per visualizzare il valore di tutte le variabili dambiente si usa il comando set.
LINGUAGGIO DI PROGRAMMAZIONE C
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità A2 Java: le basi del linguaggio.
Introduzione alla programmazione A. Ferrari. Il linguaggio C Nel 1972 Dennis Ritchie nei Bell Laboratories progettò il linguaggio C Il linguaggio possiede.
(Appunti da Scott Mitchell, James Atkinsons - Active Server Pages 3.0 – ed. Apogeo) Le pagine ASP.
PHP.
Algoritmi e Programmazione
Esercitazione 2 Array, funzioni, form
Anno accademico Il preprocessore del linguaggio C.
Fondamenti di Informatica I a.a Il linguaggio C Il preprocessore La sostituzione di macro Le compilazioni condizionali Linclusione di file C.
Programmazione Procedurale in Linguaggio C++
JavaScript Laboratorio di Applicazioni Informatiche II mod. A.
Argomenti dalla linea dei comandi Gli argomenti possono essere passati a qualsiasi funzione di un programma, compresa la main(), direttamente dalla linea.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 5 – Info B Marco D. Santambrogio – Riccardo Cattaneo –
File.
Informatica 2. Concetti fondamentali di programmazione Programmare vuol dire scrivere un algoritmo in un linguaggio che faccia funzionare un calcolatore.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Introduzione a JAVA Anno Accademico 2009/2010.
1 Corso di Informatica (Programmazione) Lezione 7 (5 novembre 2008) Programmazione in Java: lessico, variabili, tipi primitivi, assegnamento a variabile.
1 Corso di Informatica (Programmazione) Lezione 13 (21 novembre 2008) Programmazione in Java: stringhe e array.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Le stringhe di caratteri in Java Anno Accademico 2009/2010.
Introduzione agli stream e alle classi
Lezione 4: Costrutti Condizionali Prof. Raffaele Montella.
PHP – Un’introduzione Linguaggi e Traduttori 2003 Facoltà di Economia
PHP PHP Hypertext Preprocessor
SOFTWARE I componenti fisici del calcolatore (unità centrale e periferiche) costituiscono il cosiddetto Hardware (alla lettera, ferramenta). La struttura.
Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX Dettagli e comandi avanzati Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica.
Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX AWK Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica.
Java base I: Sintassi e tipi di dati
Corso di PHP.
Programmazione in Java
4 Tipi di dati & variabili
Biologia Computazionale - Algoritmi
Università degli Studi di Bari Laurea in Chimica Di spense di Informatica - Dott. F. Mavelli Programmare in Matlab Funzioni di Libreria Funzioni definite.
BIOINFO3 - Lezione 24 ARRAY
Array e Funzioni in PHP Laboratorio di Progettazione Web AA 2007/2008 Chiara Renso ISTI- CNR -
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Script 1 Marco D. Santambrogio – Ver. aggiornata al 2 Dicembre 2013.
BIOINFO3 - Lezione 261 ESERCIZIO Esercizio. Leggere delle sequenze di DNA (una per riga, a partire da inizio riga) e stampare solo le sequenze lunghe più
BIOINFO3 - Lezione 201 Come in ogni corso di introduzione ad un linguaggio di programmazione, proviamo a scrivere lormai celebre primo programma di prova.
BIOINFO3 - Lezione 211 INPUT La lettura di un input dallo standard input (tastiera) si effettua utilizzando lespressione. Quando il programma incontra.
BIOINFO3 - Lezione 41 ALTRO ESEMPIO ANCORA Progettare il comando di creazione di una tabella di pubblicazioni scientifiche. Come chiave usare un numero.
BIOINFO3 - Lezione 291 PATTERN MATCHING Imparato cosa sono e come si usano le espressioni regolari per individuare dei pattern, vediamo come si usano in.
REDIREZIONE INPUT E OUTPUT
Fopndamenti di programmazione. 2 La classe String Una stringa è una sequenza di caratteri La classe String è utilizzata per memorizzare caratteri La classe.
File e Funzioni Si possono distinguere tre tipi di file che vengono utilizzati in MATLAB: M-file: hanno estensione .m e in essi vengono memorizzati i.
1 Corso di IMPIANTI DI ELABORAZIONE Seminario: Una panoramica sul PERL Docente: Ing. Vito AstaTutor: Ing. Paolo Molinari.
PHP - PHP: Hypertext Preprocessor. Introduzione PHP (acronimo ricorsivo per "PHP: Hypertext Preprocessor") è un linguaggio di scripting general-purpose.
JavaScript Generalità Cos'è JavaScript?
Lezione 3 Struttura lessicale del linguaggio
Script di shell (bash).
Introduzione a Javascript
INTERFACCE Schede elettroniche che permettono al calcolatore di comunicare con le periferiche, che possono essere progettate e costruite in modo molto.
Variabili Numeriche –Interi (byte, short, int, long): complemento a 2 –A virgola mobile (float, double): IEEE 745 Alfanumeriche –Carattere (char): Unicode.
Corso di Algoritmi e Strutture Dati APPUNTI SUL LINGUAGGIO C
Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies.
TW Asp - Active Server Pages Nicola Gessa. TW Nicola Gessa Introduzione n Con l’acronimo ASP (Active Server Pages) si identifica NON un linguaggio di.
Tecnologie lato Client: Javascript © 2005 Stefano Clemente I lucidi sono in parte realizzati con materiale tratto dal libro di testo adottato tradotto.
Fondamenti di Markup Languages: Richiami di HTML © 2005 Stefano Clemente Stefano Clemente
Ancora sulla shell. Shell e comandi La shell e' un programma che interpreta i comandi dell'utente. I comandi possono essere dati da terminale, oppure.
Servizi Internet Claudia Raibulet
Tecnologie lato Server: i Server Web © 2005 Stefano Clemente I lucidi sono in parte realizzati con materiale tratto dal libro di testo adottato tradotto.
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
Cloud informatica V anno. Introduzione a PHP Lo scripting PHP PHP è un linguaggio di scripting lato server. Le caratteristiche di un linguaggio di scripting.
Eprogram informatica V anno. Introduzione a PHP Introduzione La diffusione di PHP ha avuto un notevole incremento dalla fine degli anni Novanta a oggi,
“ Pseudocodice ” Un programma per computer lavorerà su in insieme di “ variabili ” contenenti i dati del problema, soluzioni intermedie, soluzioni finali.
12/08/02Introduzione 1 Introduzione a Java La programmazione Il linguaggio Java Primi programmi.
Informatica Problemi e algoritmi. una situazione che pone delle domande cui si devono dare risposte. Col termine problema o situazione problematica s’indica.
Parsing ricorsivo discendente Il parsing ricorsivo discendente (recursive descent parsing) è un metodo di tipo top-down che può essere facilmente codificato.
Transcript della presentazione:

Tecnologie lato Server: CGI e Perl © 2005 Stefano Clemente I lucidi sono in parte realizzati con materiale tratto dal libro di testo adottato tradotto in italiano: © 2002 Prentice Hall H. M. Deitel, P. J. Deitel, T. R. Nieto Internet & World Wide Web – How To Program (Second Edition) Stefano Clemente

27 Ottobre 2005Stefano Clemente2 Riferimenti bibliografici H. M. Deitel, P. J. Deitel, T. R. Nieto Internet & World Wide Web – How To Program (Second Edition) ed. Prentice Hall 2002 Capitolo

27 Ottobre 2005Stefano Clemente3 Introduzione Perl (Practical Extraction and Report Language) fu creato da Larry Wall nel 1987 per monitorare progetti software di grandi dimensioni e generare dei report − gli obiettivi che Wall si poneva di raggiungere erano di creare un linguaggio che fosse più potente degli script di shell e più flessibile del C dotato di grandi capacità di elaborazione di testi ma, soprattutto, che rendesse le operazioni della programmazione comune molto dirette e facili CGI (Common Gateway Interface) è un protocollo standard per permettere agli utenti di interagire con applicazioni su web server − CGI è un’interfaccia non può essere programmata direttamente per interagire con essa bisogna eseguire un programma o uno script (script CGI) − Gli script CGI possono essere scritti in diversi linguaggi di programmazione Perl è il più comunemente utilizzato per la sua potenza, flessibilità e infine per l’elevata disponibilità di programmi

27 Ottobre 2005Stefano Clemente4 Introduzione Interazione client/server quando il client richiede un documento che si riferisce ad uno script CGI Spesso gli script elaborano informazioni ricavate da FORM − es. verifica della carta di credito e notifica al cliente dell’avvenuto pagamento o del rifiuto Sul server devono essere concessi i permessi per l’esecuzione degli script CGI tipicamente file con estensione.cgi o.pl posizionati in directory particolari (cgi-bin) Il risultato restituito dall’applicazione viene inoltrato al client in forma di (X)HTML e può contenere immagini, audio, XML, Flash ecc.

27 Ottobre 2005Stefano Clemente5 Introduzione Applicazioni − interagiscono con l’utente attraverso standard input standard output Nel caso degli script CGI, Common Gateway interface è una pipe che redirige all’applicazione l’input proveniente dal browser (es. FORM) e redirige al client web l’output proveniente dall’applicazione

27 Ottobre 2005Stefano Clemente6 Installazione di Perl Download dal sito ftp://ftp.activestate.com/ActivePerl/Win dows/5.8ftp://ftp.activestate.com/ActivePerl/Win dows/5.8 Versione più recente − ActivePerl MSWin32-x86.msi

27 Ottobre 2005Stefano Clemente7 Installazione di Perl

27 Ottobre 2005Stefano Clemente8 Installazione di Perl

27 Ottobre 2005Stefano Clemente9 Installazione di Perl

27 Ottobre 2005Stefano Clemente10 Installazione di Perl

27 Ottobre 2005Stefano Clemente11 Installazione di Perl

27 Ottobre 2005Stefano Clemente12 Installazione di Perl

27 Ottobre 2005Stefano Clemente13 Installazione di Perl

27 Ottobre 2005Stefano Clemente14 Installazione di Perl

27 Ottobre 2005Stefano Clemente15 Esempio 1 #!c:\perl\bin\perl.exe # Esempio slide 6-7: esempio1.pl # Primo programma in Perl. print( "Benvenuti in Perl!\n" ); #Le righe che cominciano con “ # ” sono righe di commento #!“ #! ” non rappresenta un commento ma un costrutto “shebang” che nei sistemi Unix e in Apache indica dove si trova l’interprete Perl printBenvenuti in Perl!\n\nLa riga print stampa a standard output la stringa “Benvenuti in Perl!\n” dove \n è il newline Questo script non usa CGI; può essere eseguito da una finestra DOS (previa installazione di ActivePerl)

27 Ottobre 2005Stefano Clemente16 Esempio 1

27 Ottobre 2005Stefano Clemente17 Perl Perl è case sensitive ;Ogni comando è concluso da un carattere “;” printLe parentesi che racchiudono gli argomenti di una funzione (es. print ) non sono obbligatorie, ma consigliate per maggiore chiarezza Perl dispone di tre tipi di dato − scalare − array − hash e ogni nome di variabile è preceduto da un carattere speciale che identifica il tipo di dato del valore della variabile ( $ =array, % =hash)

27 Ottobre 2005Stefano Clemente18 Tipi di dati Tipo di dato Formato nome variabile Descrizione scalare$nomeStringhe, numeri interi, numeri in virgola mobile, riferimenti ordinata di valori scalari accessibili attraverso indici hash%nomeLista non ordinata di valori scalari accessibili per mezzo valori scalari unici

27 Ottobre 2005Stefano Clemente19 Esempio 2 #!c:\perl\bin\perl.exe # Esempio slide 10-11: esempio2.pl # Uso delle variabili scalari. $numero = 5; print( "Valore della variabile \$numero: $numero\n\n" ); $numero += 5; print( "La variabile \$numero dopo averle sommato 5 vale: $numero\n" ); $numero *= 2; print( "La variabile \$numero dopo averla moltiplicata per 2 vale: " ); print( "$numero\n\n\n" ); # Uso di una variabile non inizializzata in una stringa print( "Uso di una variabile prima dell'inizializzazione: $variabile\n\n" ); # Uso di una variabile non inizializzata in calcoli $test = $noninizializzata + 5; print( "Sommando la variabile non inizializzata \$undefined a 5 restituisce: $test\n" ); # Uso di stringhe in calcoli numerici $stringa = "questa è una stringa"; $numero += $stringa; print( "La somma di una stringa a un numero restituisce: $numero\n" ); $stringa2 = "15abcdefghilm1"; $numero2 = $numero + $stringa2; print( "Sommando $numero a \"$stringa2\" restituisce: $numero2\n" );

27 Ottobre 2005Stefano Clemente20 Esempio 2

27 Ottobre 2005Stefano Clemente21 undef undefLe variabili non inizializzate valgono undef, che assume valori diversi a seconda del contesto undef − nel contesto numerico undef = 0 undef − nel contesto stringhe undef = “” L’uso di stringhe nel contesto numerico è soggetto alle seguenti regole − se la stringa non inizia con nessun numero, viene considerata undef − se la stringa comincia con dei numeri viene considerata come se fosse un numero, ma il suo valore non viene cambiato "15abcdefghilm1" "15abcdefghilm1"nell’esempio la stringa "15abcdefghilm1" è tradotta nel numero 15, ma il risultato dell’operazione che la usa è "15abcdefghilm1"

27 Ottobre 2005Stefano Clemente22 variabili array devono avere il nome preceduto Ogni elemento è riferito con la sintassi $ [ ] 0Il primo elemento ha indice 0 Non è necessario definire le dimensioni dell’array − ogni volta che si cerca di assegnare un valore a un elemento non definito, l’interprete Perl provvede a estendere l’array

27 Ottobre 2005Stefano Clemente23 Array L’inizializzazione può avvenire − assegnando direttamente un elenco di = (, …, ); − assegnando un valore ad ogni singolo elemento $ [ ] = ;.. − assegnando un elenco “range” attraverso l’operatore “.. ”, che comporta l’assegnazione di tutti i valori compresi tra il valore iniziale e quello = (.. );

27 Ottobre 2005Stefano Clemente24 Array Gli elementi di un array possono essere stampati attraverso la funzione print print ( \n” ); $” in questo caso sono stampati per default ognuno separato dall’altro da uno spazio. Il carattere di separazione è definito dalla variabile $” e volendolo modificare basta assegnare un altro valore $” = “/”; Se la funzione print viene invocata senza racchiudere l’array tra apici, non verrà stampato il carattere di separazione degli elementi print );

27 Ottobre 2005Stefano Clemente25 Esempio 3 #!c:\perl\bin\perl.exe # Esempio slide 16-17: esempio3.pl # Uso degli = ( "Pippo", "Pluto", "Paperino", "Zio Paperone" ); print( "Contenuto ); print( "Stampa dell'array fuori dagli apici: "\n\n" ); print( "Terzo elemento: $array[ 2 ]\n" ); $numero = 3; print( "Quarto elemento: $array[ $numero ]\n\n" = ( 'A'.. 'Z' ); print( "Elenco delle lettere maiuscole ottenuta con l'operatore range\n" ); print( \n\n" ); $array3[ 3 ] = "Quarto"; print( "Array con un solo elemento \n\n" ); print( 'Stampa con uso di apici singoli: ' ); print( e \n', "\n" ); print( "Stampa con uso di backslash: " ); print( e \\n\n" );

27 Ottobre 2005Stefano Clemente26 Esempio 3

27 Ottobre 2005Stefano Clemente27 Esempio 4 #!c:\perl\bin\perl.exe # Esempio slide 18-19: esempio4.pl # Uso degli array e operatori di confronto su = qw( mela pera banana ); foreach $elemento ) { if ( $elemento eq "mela" ) { if ( $elemento eq "mela" ) { print( "La stringa '$elemento' corrisponde alla stringa 'mela'\n" ); print( "La stringa '$elemento' corrisponde alla stringa 'mela'\n" ); } if ( $elemento ne "mela" ) { if ( $elemento ne "mela" ) { print( "La stringa '$elemento' non corrisponde alla stringa 'mela'\n" ); print( "La stringa '$elemento' non corrisponde alla stringa 'mela'\n" ); } if ( $elemento lt "mela" ) { if ( $elemento lt "mela" ) { print( "La stringa '$elemento' e' minore della stringa 'mela'\n" ); print( "La stringa '$elemento' e' minore della stringa 'mela'\n" ); } if ( $elemento gt "mela" ) { if ( $elemento gt "mela" ) { print( "La stringa '$elemento' e' maggiore della stringa 'mela'\n" ); print( "La stringa '$elemento' e' maggiore della stringa 'mela'\n" ); }}

27 Ottobre 2005Stefano Clemente28 Esempio 4

27 Ottobre 2005Stefano Clemente29 Operatori di confronto eqne ltgtGli operatori di confronto eq (equal), ne (not equal), lt (less than) e gt (greater then) sono per il confronto di stringhe ==!= >=Gli operatori destinati al confronto numerico sono ==, !=,, >= L’uso di un operatore di confronto stringhe per confrontare numeri (o il viceversa) è un errore nel programma

27 Ottobre 2005Stefano Clemente30 Operatori di confronto stringhe: match m//Un operatore molto potente per il confronto delle stringhe è l’operatore m// (match), utile per cercare determinati elementi all’interno di una stringa, che richiede due operandi $stringa1, m// /$stringa1 =~Per verificare se $stringa1 contiene, si usa l’operatore m// con come primo operando che compare tra i caratteri / dell’operatore, $stringa1 come secondo operando che è assegnato all’operatore di confronto attraverso l’operatore =~ (operatore di binding) $stringa1 =~ / /; $stringa1 =~ / /; cerca in tutta la stringa $stringa1 =~ /^ /; $stringa1 =~ /^ /; cerca all’inizio della stringa $stringa1 =~ / $/; $stringa1 =~ / $/; cerca alla fine della stringa

27 Ottobre 2005Stefano Clemente31 Operatori di confronto stringhe: match Confronti più sofisticati possono essere eseguiti su − tutte le parole che compongono una stringa (word boundary) − sulle restanti parti (nonword boundary) Con word boundary si intende la porzione di una stringa compresa tra un carattere alfanumerico e un carattere non alfanumerico I caratteri alfanumerici sono − numeri da 0 a 9 − caratteri alfabetici minuscoli − caratteri alfabetici maiuscoli _ − underscore ( _ ) \bQuesto tipo di ricerca è effettuata attraverso la specifica del simbolo \b all’interno dell’operatore match

27 Ottobre 2005Stefano Clemente32 Operatori di confronto stringhe: match Nella modalità word boundary si possono cercare le parole che cominciano finiscono con certe lettere utilizzando la sequenza di escape − \w − \w per un singolo carattere − \w+ − \w+ per più caratteri $1, $2, … i risultati sono memorizzati nelle variabili di Perl $1, $2, … Si possono aggiungere dei modificatori alla stringa da cercare che modificano il processo del confronto computer /computer/i − se la stringa da cercare è “ computer ” e si vuole ignorare il controllo delle maiuscole/minuscole si scriverà la stringa come /computer/i g − se si vuole che la ricerca restituisca tutti gli elementi trovati e non si fermi al primo, bisogna aggiungere il modificatore g

27 Ottobre 2005Stefano Clemente33 match: quantificatori QuantificatoreDescrizione {n} n Esattamente n volte {m,n} mn Tra m e n volte {n, } n n o più volte + {1, } Una o più volte (= {1, } ) * {0, } Nessuna o più volte (= {0, } ) ? {0, 1} Una o nessuna (= {0, 1} )

27 Ottobre 2005Stefano Clemente34 match: simboli SimboloDescrizione ^ All’inizio della riga $ Alla fine della riga \b word boundary \B nonword boundary \w carattere alfanum parola \W Carattere non parolaSimboloDescrizione\d Cifra (0-9) \D Non cifra \s Spazio \S Non spazio \n newline \t tab

27 Ottobre 2005Stefano Clemente35 match: modificatori ModificatoreDescrizione g Esegue la ricerca di tutte le occorrenze e non solo della prima i Ricerca case insensitive m Non ignora i newline s Ignora i newline trattandoli come spazi x Ignora gli spazi

27 Ottobre 2005Stefano Clemente36 Esempio 5 #!c:\perl\bin\perl.exe # Esempio slide 27-28: esempio5.pl # Uso dell'operatore m// (match). $search = "Now is is the time"; print( "Test string is: '$search'\n\n" ); if ( $search =~ /Now/ ) { print( "String 'Now' was found.\n" ); print( "String 'Now' was found.\n" );} if ( $search =~ /^Now/ ) { print( "String 'Now' was found at the beginning of the line." ); print( "String 'Now' was found at the beginning of the line." ); print( "\n" ); print( "\n" );} if ( $search =~ /Now$/ ) { print( "String 'Now' was found at the end of the line.\n" ); print( "String 'Now' was found at the end of the line.\n" );} if ( $search =~ /\b ( \w+ ow ) \b/x ) { print( "Word found ending in 'ow': $1 \n" ); print( "Word found ending in 'ow': $1 \n" );} if ( $search =~ /\b ( \w+ ) \s ( \1 ) \b/x ) { print( "Repeated words found: $1 $2 \n" ); print( "Repeated words found: $1 $2 \n" = ( $search =~ / \b ( t \w+ ) \b /gx ); print( "Words beginning with 't' );

27 Ottobre 2005Stefano Clemente37 Esempio 5

27 Ottobre 2005Stefano Clemente38 Variabili hash %Le variabili di tipo hash devono avere il nome preceduto da % Un hash è un insieme non ordinato di coppie di valori scalari Ogni elemento dell’hash è acceduto per mezzo di una chiave, una stringa unica per tutto l’hash che è associata a quell’elemento L’hash è anche detto array associativo a causa del fatto che chiavi e valori sono associati a coppie

27 Ottobre 2005Stefano Clemente39 Variabili hash $ { }L’accesso ad un elemento dell’hash avviene con la sintassi $ { } keys ( % )La funzione keys restituisce un array non ordinato che contiene tutte le chiavi dell’hash es: keys ( % ) sort ( keys ( % ) )Volendo ottenere un array per ordine di chiave si può utilizzare la funzione sort es: sort ( keys ( % ) )