Your SlideShare is downloading. ×
0
Parte 2




             Caratteristiche del Perl




Linguaggi dinamici – A.A. 2009/2010
                                ...
Assegnamento a lista di più variabili
T   Un meccanismo utilizzato frequentemente nel
    linguaggio Perl è l'assegnamento...
La variabile di default
T Una semplificazione introdotta nel Perl è la
  possibilità di non definire una variabile per un
...
Subroutine e funzioni
T Il Perl permette la definizione di subroutine e
  funzioni tramite la parola chiave sub
T Lo schel...
Prelievo parametri funzione
T   A ciascuna funzione è associato l'array degli
    argomenti @
              @_
T   Tali ar...
Prelievo argomenti programma
T   Analogamente, al programma è associato
    l array
    l'array degli argomenti @ARGV
    ...
Valore di ritorno di una funzione
T   Il valore di ritorno è specificato tramite
    l istruzione
    l'istruzione return
...
Valore di ritorno di una funzione
T   L'espressione ritornata dipende dal contesto
    richiesto alla funzione stessa
    ...
Ordinamento liste
T   La funzione builtin sort permette di ordinare
    liste secondo un ordinamento ben specifico
    T  ...
Suddivisione di liste
T   La funzione builtin split permette di
    suddividere una espressione (solitamente una
         ...
Apertura e chiusura di file
T   Le funzioni builtin open e close gestiscono
    l apertura
    l'apertura e la chiusura di...
Lettura da file
T   L'operatore <FILEHANDLE> implementa la la
    lettura bufferizzata di dati dal file referenziato
    t...
STDIN, STDOUT, STDERR
T I tre descrittori di ingresso (STDIN), uscita
  (OUTPUT),
  (OUTPUT) errore (STDERR) standard asso...
Scrittura su file
T La funzione builtin print implementa la
  scrittura bufferizzata su file
print FILEHANDLE string;
T L
...
Cancellazione di file
T La funzione builtin unlink cancella uno o più
  file
unlink “filename”;
unlink ( “file1”, “file2”)...
Espressioni regolari
T   Il Perl mette a disposizione un supporto molto
    versatile per le espressioni regolari
      T ...
Wild card
T   Wild card permesse:
      T   .: match di un qualunque carattere
           :
      T   w: match di un carat...
Wild card
T   Wild card di negazione: iniziano con il
    carattere maiuscolo
      T   W: match di un carattere che NON s...
Operatori di ripetizione
T   Ciascun carattere, wild card o sequenza di
    caratteri può essere seguita da una ripetizion...
Operatori di posizione
T   Gli operatori di posizione specificano in quale
    posizione di una riga ci si trova
      T  ...
Raggruppamento
T   È possibile specificare un raggruppamento di
    espressioni regolari
T   Un raggruppamento è un elenco...
Classi di caratteri
T   Alcuni raggruppamenti possono essere tediosi
    da scrivere
      T   Es.: le lettere dell'alfabe...
Sostituzione
T   L'espressione regolare serve non solo ad
    identificare sottostringhe bensì anche a
                 so...
Sostituzione
T   La modalità operativa è espressa tramite una
    sequenza di caratteri fra i seguenti
      T   g: sostit...
Manipolazione di stringhe
T   L'operatore =~ verifica il matching di una
    stringa con una espressione regolare
      T ...
Assegnamento di matching
T   È possibile associare parti di un matching ad
    una variabile
T   Esempio: si voglia interc...
Assegnamento di matching
T   Dopo il matching, nelle variabili speciali $1, $2,
    ..., $9 sono presenti le stringhe che ...
Strutture dati avanzate
T   È possibile definire strutture dati complicate a
    piacere
      T   Array di array
      T ...
Array di array
T   Dichiarazione: si dichiara un array contenente
    liste anonime
T   Generazione:
      T   si inserisc...
Hash di array
T   Dichiarazione: si dichiara un hash contenente
    liste anonime
T   Generazione:
      T   si inserisce ...
Array di hash
T   Dichiarazione: si dichiara un array contenente
    hash anonime
T   Generazione:
      T   si inserisce ...
Hash di hash
T   Dichiarazione: si dichiara un hash contenente
    hash anonime
T   Generazione:
      T   si inserisce ne...
Upcoming SlideShare
Loading in...5
×

Pe t2 perl-caratteristiche

357

Published on

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
357
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
4
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Transcript of "Pe t2 perl-caratteristiche"

  1. 1. Parte 2 Caratteristiche del Perl Linguaggi dinamici – A.A. 2009/2010 1
  2. 2. Assegnamento a lista di più variabili T Un meccanismo utilizzato frequentemente nel linguaggio Perl è l'assegnamento multiplo di l assegnamento variabili tramite l'utilizzo di due liste T Una lista elenca le variabili da inizializzare T Una seconda lista (opzionale) specifica i valori di inizializzazione my ( $x, $y, $z ) = (1, 2, 3); Linguaggi dinamici – A.A. 2009/2010 2
  3. 3. La variabile di default T Una semplificazione introdotta nel Perl è la possibilità di non definire una variabile per un ciclo T Ciascuna espressione prodotta in una iterazione di un ciclo, se non espressamente assegnata ad una variabile, viene associata variabile alla variabile speciale $_ foreach (@array) { f h (@ ) print $_ . “n”; } Linguaggi dinamici – A.A. 2009/2010 3
  4. 4. Subroutine e funzioni T Il Perl permette la definizione di subroutine e funzioni tramite la parola chiave sub T Lo scheletro generico di una funzione è il seguente: sub funzione { <prelievo parametri>; ; <definizione variabili locali>; <statement;> <ritorno risultato;> } Linguaggi dinamici – A.A. 2009/2010 4
  5. 5. Prelievo parametri funzione T A ciascuna funzione è associato l'array degli argomenti @ @_ T Tali argomenti possono: T essere associati a variabili locali tramite un i ti i bili l li t it assegnamento multiplo T essere prelevati uno per uno con la funzione l i l f i shift T essere acceduti tramite la sintassi $_[] Linguaggi dinamici – A.A. 2009/2010 5
  6. 6. Prelievo argomenti programma T Analogamente, al programma è associato l array l'array degli argomenti @ARGV T $ARGV[0]: primo argomento T Il nome del programma è memorizzato nella d l i t ll variabile speciale $0 T Per una panoramica completa delle variabili speciali a disposizione del linguaggio: perldoc perlvar Linguaggi dinamici – A.A. 2009/2010 6
  7. 7. Valore di ritorno di una funzione T Il valore di ritorno è specificato tramite l istruzione l'istruzione return T È possibile ritornare uno scalare oppure una lista, lista che saranno valutati nel contesto richiesto T Se S non viene esplicitato lo statement di return, i li it t l t t t t il valore di ritorno è identificato in due passi distinti di ti ti T Passo 1: se l'ultimo statement è una espressione, essa diviene il valore di ritorno T Passo 2: altrimenti, l'espressione ritornata è quella nulla Linguaggi dinamici – A.A. 2009/2010 7
  8. 8. Valore di ritorno di una funzione T L'espressione ritornata dipende dal contesto richiesto alla funzione stessa T Contesto lista: @array=funzione() T Contesto C t t scalare: $ l $scalare=funzione() l f i () T Contesto void (procedura): funzione() T Non tenere conto di questo aspetto costituisce una delle fonti primarie di errori! Linguaggi dinamici – A.A. 2009/2010 8
  9. 9. Ordinamento liste T La funzione builtin sort permette di ordinare liste secondo un ordinamento ben specifico T @sorted_array = sort { sort_func } @array; T La f L funzione di ordinamento è un semplice i di t li confronto lessicografico o numerico T { $a <=> $b }: ordinamento alfanumerico T { $a cmp $b }: ordinamento lessicografico T Se non specificato altrimenti, l'ordinamento è quello lessicografico T La funzione builtin reverse prende in ingresso un array e ritorna l'array invertito ( p y y (il primo elemento è l'ultimo, l'ultimo è il primo) Linguaggi dinamici – A.A. 2009/2010 9
  10. 10. Suddivisione di liste T La funzione builtin split permette di suddividere una espressione (solitamente una (solitamente, stringa) in una lista di elementi, sulla base di una espressione separatrice p p T @array = split / /, $string; T Il primo argomento è una espressione regolare che identifica il separatore nella stringa T La stringa viene spezzata ogniqualvolta si incontra un separatore T Gli elementi risultanti sono inseriti nell'array Linguaggi dinamici – A.A. 2009/2010 10
  11. 11. Apertura e chiusura di file T Le funzioni builtin open e close gestiscono l apertura l'apertura e la chiusura di file tramite descrittori (detti filehandle) T open FILEHANDLE, MODE, EXPR: apre un file FILEHANDLE MODE identificato dall'espressione EXPR nella modalità specificata da MODE, assegnando ad esso il descrittore FILEHANDLE T close FILEHANDLE: chiude il file riferito da FILEHANDLE T Un filehandle è una variabile oppure una costante con nome in caratteri maiuscoli Linguaggi dinamici – A.A. 2009/2010 11
  12. 12. Lettura da file T L'operatore <FILEHANDLE> implementa la la lettura bufferizzata di dati dal file referenziato tramite FILEHANDLE T A seconda del contesto utilizzato, possono utilizzato essere ritornati: T una stringa scalare contenente il b ffer letto na buffer T un array di stringhe rappresentanti le righe del file fil T Le stringhe contengono già un carattere di ritorno a capo T Rimozione ultimo carattere da una stringa: g funzione builtin chomp Linguaggi dinamici – A.A. 2009/2010 12
  13. 13. STDIN, STDOUT, STDERR T I tre descrittori di ingresso (STDIN), uscita (OUTPUT), (OUTPUT) errore (STDERR) standard associati ad un processo sono accessibili tramite i descrittori STDIN, STDOUT, STDERR , , T Lettura da STDIN: while(<STDIN>) { my $buffer = $_; } T Scrittura su STDOUT, STDERR: print STDOUT stringa; print STDERR stringa; Linguaggi dinamici – A.A. 2009/2010 13
  14. 14. Scrittura su file T La funzione builtin print implementa la scrittura bufferizzata su file print FILEHANDLE string; T L La variante printf permette di scrivere stringhe i t i tf tt i ti h con un formato di stampa ben definito (analogo della f i tf() d l C) ( l d ll fprintf() del printf FILEHANDLE FORMAT string; Linguaggi dinamici – A.A. 2009/2010 14
  15. 15. Cancellazione di file T La funzione builtin unlink cancella uno o più file unlink “filename”; unlink ( “file1”, “file2”); li k “fil 1” “fil 2”) T La procedura di cancellazione è quella canonica dei filesystem UNIX T Si scollega (unlink) un hard link al file g ( ) T Se l'hard link è unico, si scollegano i metadati del file dalle strutture del filesystem y Linguaggi dinamici – A.A. 2009/2010 15
  16. 16. Espressioni regolari T Il Perl mette a disposizione un supporto molto versatile per le espressioni regolari T Per una introduzione completa, si legga: perldoc perlretut T Una espressione regolare del Perl è una stringa contenuta fra due slash / T Esempio: /pippo/ è l'espressione regolare che intercetta la sottostringa “pippo” i l i “ i ” T È possibile specificare espressioni di tipo wild card, in grado di rappresentare intere classi di sequenze di caratteri Linguaggi dinamici – A.A. 2009/2010 16
  17. 17. Wild card T Wild card permesse: T .: match di un qualunque carattere : T w: match di un carattere di tipo “parola” (alfanumerico oppure _) ( lf i ) T s: match di un carattere di tipo “spazio bianco” (spazio, tab) ( i t b) T d: match di un digit (da 0 a 9) T t: match di un carattere tab T n: match di un carattere newline T 0nn: match di un numero ottale nn T xnn: match di un numero esadecimale nn Linguaggi dinamici – A.A. 2009/2010 17
  18. 18. Wild card T Wild card di negazione: iniziano con il carattere maiuscolo T W: match di un carattere che NON sia di tipo parola T S: match di un carattere che NON sia di tipo “spazio bianco” spazio bianco T D: match di un carattere che NON sia un digit Linguaggi dinamici – A.A. 2009/2010 18
  19. 19. Operatori di ripetizione T Ciascun carattere, wild card o sequenza di caratteri può essere seguita da una ripetizione T La ripetizione indica quante volte è permessa una sequenza, affinché il matching sia valido sequenza T *: match 0 o più volte T +: match 1 o più volte T ?: match 0 o 1 volte T {n}: match n volte T {n,}: match almeno n volte T {n,m}: match almeno n, al massimo m volte /S{1,8}.S{0,3}/ /S{1 8} S{0 3}/ Linguaggi dinamici – A.A. 2009/2010 19
  20. 20. Operatori di posizione T Gli operatori di posizione specificano in quale posizione di una riga ci si trova T ^: inizio riga T $: fine i $ fi riga Linguaggi dinamici – A.A. 2009/2010 20
  21. 21. Raggruppamento T È possibile specificare un raggruppamento di espressioni regolari T Un raggruppamento è un elenco di espressioni, espressioni separate dal carattere | e racchiuse fra parentesi tonde () T Esempio:(a|b|c) E i ( |b| ) T Tale espressione fa match con uno qualunque dei componenti interni (a, b o c) Linguaggi dinamici – A.A. 2009/2010 21
  22. 22. Classi di caratteri T Alcuni raggruppamenti possono essere tediosi da scrivere T Es.: le lettere dell'alfabeto (a|b|c|...|z) T Per P semplificare la notazioni, si introducono le lifi l t i i ii t d l classi di equivalenza T Una classe di equivalenza specifica un gruppo di caratteri; essa è rappresentata da una o più sequenze racchiuse fra parentesi quadre [] T [a-zA-Z]: l'insieme delle lettere dell'alfabeto, minuscole e maiuscole T [ ] [0-9]: l'insieme dei digit decimali g Linguaggi dinamici – A.A. 2009/2010 22
  23. 23. Sostituzione T L'espressione regolare serve non solo ad identificare sottostringhe bensì anche a sottostringhe, sostituirle T In tal caso la notazione delle espressioni caso, regolari si presenta nella sua forma più generale T s/regexp1/regexp2/modalità T s: operatore di sostituzione t tit i T regexp1: espressione regolare per il matching T regexp2: espressione regolare per la sostituzione T modalità: modalità operativa Linguaggi dinamici – A.A. 2009/2010 23
  24. 24. Sostituzione T La modalità operativa è espressa tramite una sequenza di caratteri fra i seguenti T g: sostituisce ogni istanza trovata nella riga (non solo la prima) T i: il matching è case insensitive T Esempio: E i T s/^Nome1/Nome2/g Linguaggi dinamici – A.A. 2009/2010 24
  25. 25. Manipolazione di stringhe T L'operatore =~ verifica il matching di una stringa con una espressione regolare T Se una stringa verifica l'espressione, viene ritornato 1 T Altrimenti, viene ritornato 0 T L'operatore ! verifica il non matching di una L' t !~ ifi t hi stringa con una espressione regolare T Se una stringa NON verifica l'espressione, viene ritornato 1 T Altrimenti, viene ritornato 0 Linguaggi dinamici – A.A. 2009/2010 25
  26. 26. Assegnamento di matching T È possibile associare parti di un matching ad una variabile T Esempio: si voglia intercettare una sequenza di numeri arbitraria in una riga e si voglia riga, memorizzare il numero intercettato in una variabile T Si scrive l'espressione regolare relativa: /^[0-9]+$/ /^[0 9] $/ T Si mettono delle parentesi tonde () intorno al contenuto da intercettare: /^([0-9]+)$/ T Si invoca il matching con l'operatore =~ g p Linguaggi dinamici – A.A. 2009/2010 26
  27. 27. Assegnamento di matching T Dopo il matching, nelle variabili speciali $1, $2, ..., $9 sono presenti le stringhe che hanno verificato il matching della prima, della seconda, ..., della nona coppia di parentesi , , pp p T Nel nostro caso, se il matching ha avuto esito positivo $1 assume il valore del positivo, numero T Si assegna $1 ad una variabile: $var = $1; Linguaggi dinamici – A.A. 2009/2010 27
  28. 28. Strutture dati avanzate T È possibile definire strutture dati complicate a piacere T Array di array T Hash H h di array T Array di hash T Hash di hash T Per una introduzione completa, si rimanda a: p , perldoc perldsc Linguaggi dinamici – A.A. 2009/2010 28
  29. 29. Array di array T Dichiarazione: si dichiara un array contenente liste anonime T Generazione: T si inserisce nell'array una lista anonima ii i ll' li t i T si dereferenzia un elemento in un array e ci si aggiungono elementi i l i T Accesso e stampa: T si usa la notazione $array[index][index] T si stampa l'array anonimo l array Linguaggi dinamici – A.A. 2009/2010 29
  30. 30. Hash di array T Dichiarazione: si dichiara un hash contenente liste anonime T Generazione: T si inserisce nell'hash una lista anonima ii i ll'h h li t i T si dereferenzia un elemento in un array e ci si aggiungono elementi i l i T Accesso e stampa: T si usa la notazione $hash{key}[index] T si usa un ciclo sulla lista keys %hash Linguaggi dinamici – A.A. 2009/2010 30
  31. 31. Array di hash T Dichiarazione: si dichiara un array contenente hash anonime T Generazione: T si inserisce nell'array una h h anonima ii i ll' hash i T si dereferenzia un elemento in un hash tramite l'operatore di d l' dereferenziazione -> e si aggiunge f i i i i un valore corrispettivo ad una chiave T Accesso e stampa: T si usa la notazione $array[index]{key} T si dereferenzia l'elemento dell'array, si estraggono le chiavi e si stampano i valori gg p Linguaggi dinamici – A.A. 2009/2010 31
  32. 32. Hash di hash T Dichiarazione: si dichiara un hash contenente hash anonime T Generazione: T si inserisce nell’hash una h h anonima ii i ll’h h hash i T si assegna un valore ad ogni chiave della hash anonima tramite l' i i l'operatore => T Accesso e stampa: T si usa la notazione $hash{key}{key} T si dereferenzia l'elemento dell'hash, si l elemento dell hash, estraggono le chiavi e si stampano i valori Linguaggi dinamici – A.A. 2009/2010 32
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×