1 / 96

Bioinformatica Linguaggio Perl (1)

Bioinformatica Linguaggio Perl (1). Dr. Giuseppe Pigola – pigola@dmi.unict.it Dr. Alessandro Laganà – lagana@dmi.unict.it. Cos’è PERL?. PERL ( Practical Extraction and Report Language ) è un linguaggio di programmazione interpretato General Purpose.

gema
Download Presentation

Bioinformatica Linguaggio Perl (1)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. BioinformaticaLinguaggio Perl (1) Dr. Giuseppe Pigola – pigola@dmi.unict.it Dr. Alessandro Laganà – lagana@dmi.unict.it

  2. Cos’è PERL? • PERL (Practical Extraction and Report Language) è un linguaggio di programmazione interpretato General Purpose. • Viene usato in ogni settore come linguaggio colla, cioè adatto ad unire vari elementi. • Scrivere un Database, un foglio elettronico, un Sistema Operativo o un server Web completo in PERL sarebbe possibile ma praticamente inutile. • La funzione principale di PERL è invece unire i vari elementi. Bioinformatica

  3. PERL linguaggio colla • PERL può prendere un database, convertirlo in un file adatto per un foglio elettronico e, durante l’elaborazione, correggere i dati. • PERL è anche in grado di prendere i documenti di un elaboratore di testi e convertirli nel formato HTML per la visualizzazione sul Web. • Essendo un linguaggio mirato ad unire gli elementi, PERL si adatta facilmente alle varie situazioni. Ha uno stile di programmazione molto flessibile e quindi è possibile eseguire la stessa operazione in più modi. Bioinformatica

  4. Link e Risorse • Sito ufficiale: • http://www.perl.org/ • Sito Italiano: • http://www.perl.it/ • Active Perl: • http://www.activestate.com/ Bioinformatica

  5. Il primo programma PERL • Una volta digitato il programma nell’editor di testo, lo salviamo come hello. Non è necessario aggiungere l’estensione del file, anche se PERL consente di farlo. Le estensioni più comuni sono .pl o .plx. • Per eseguire il programma è necessario aprire la finestra Prompt dei comandi, possibilmente nella directory in cui è stato salvato hello.pl. #!/usr/bin/perl print “Hello, World!\n”; Bioinformatica

  6. PERL passo per passo • Per PERL tutto ciò che appare dopo il simbolo # è un commento. Il simbolo #! sulla prima riga di un programma è diversa in alcuni casi: il nome di percorso che segue fa riferimento al percorso dell’interprete PERL: • #!/usr/bin/perl • Se un file UNIX inizia con il simbolo #! seguito dal percorso di un interprete, UNIX sa che si tratta di un programma e sa anche come interpretarlo. Lo stesso vale per alcuni server Web, tra cui APACHE; #!/usr/bin/perl use strict; # Forza la dichiarazione di variabili use warning; # Forza l’inizializzazione di variabili, controlla deprecated; Bioinformatica

  7. PERL, linguaggio a forma libera • PERL è noto come linguaggio di programmazione a forma libera; ciò significa che le istruzioni di PERL non sono esigenti sul modo in cui sono scritte. In un’istruzione PERL è possibile inserire spazi, tabulazioni, ritorni a capo, senza problemi (a meno che non vengano spezzate delle parole chiave): #!/usr/bin/perl print “Hello, World!\n” ; Bioinformatica

  8. Unità di base di PERL:numeri e stringhe • In PERL, i numeri e le stringhe sono le unità di base e prendono il nome di scalari. • Così come in altri linguaggi di programmazione, in PERL esistono scalari costanti (o letterali) e scalari variabili. Bioinformatica

  9. I letterali numerici • PERL offre due tipi diversi di costanti scalari di nome letterali: i letterali numerici e i letterali stringa. • I letterali numerici sono numeri e PERL consente di scrivere i numeri in diversi modi: Bioinformatica

  10. I letterali stringa • In PERL i letterali stringa sono sequenze di caratteri, come Hello, World. E’ necessario racchiudere le stringhe letterali in apici, singoli ‘ ‘ o doppi “ “: • Gli apici all’interno delle stringhe devono essere preceduti dal simbolo di backslash \. “foo!” ‘Fourscore and seven years ago’ “” “Then I said to him, \”Go ahead!\”” ‘The doctor\’s stethoscope was cold.’ Bioinformatica

  11. I letterali stringa (2) • La differenza principale tra le stringhe con doppi apici “ “ e quelle con apici singoli ‘ ‘ è che queste ultime sono letterali. • Ogni carattere in una stringa con apici singoli significa esattamente tale carattere. • D’altra parte, in una stringa con doppi apici, PERL controlla se sono presenti nomi di variabili o sequenze di escape e li traduce se li trova. • Le sequenze di escape sono stringhe speciali che consentono di incorporare caratteri nelle stringhe quando la digitazione degli stessi causerebbero problemi. Bioinformatica

  12. Alcune sequenze di escape Bioinformatica

  13. Operatori q e qq (Delimitatori) • Oltre agli apici PERL offre gli operatori qq e q. Per usare qq si può racchiudere il letterale stringa in qq( ) al posto degli apici: • E’ possibile usare l’operatore q al posto degli apici singoli per racchiudere il testo: qq(I said, “Go then,” and he said “I’m gone”) q(Tom’s kite wedged in Sue’s tree) Bioinformatica

  14. Operatori q e qq (2) • Al posto delle parentesi si può usare qualsiasi altro carattere non alfabetico e non numerico per delimitare una stringa: • Il carattere da usare come delimitatore deve comparire subito dopo l’operatore q o qq. • Se si usa una coppia di caratteri ( ), <>,{ } o [ ] come delimitatori, dovranno essere nidificati appropriatamente: • Tuttavia questo metodo non rende i programmi molto leggibili, per cui conviene scegliere delimitatori che non appaiono nella stringa: q/Tom’s kite wedged in Sue’s tree/ q,Tom’s kite wedged in Sue’s tree, q(Joe (Tom’s dad) fell out of a (rather large) tree.); Q[Joe (Tom’s dad) fell out of a (rather large) tree.]; Bioinformatica

  15. Variabili scalari • Per memorizzare dati scalari in PERL è necessario usare una variabile scalare. In PERL le variabili scalari sono indicate con il simbolo del dollaro ($ - Identificatore del tipo) seguito dal nome della variabile: $a $total $Date $serial_number $cat450 Bioinformatica

  16. Variabili scalari (2) • Gli altri tipi di variabili (hash e array) usano un identificatore diverso o addirittura nessun identificatore (filehandle). • I nomi delle variabili in PERL, siano esse hash, array, filehandle o scalari, devono essere conformi alle regole seguenti: • Possono contenere caratteri alfabetici (a-z, A-Z), numeri o caratteri di sottolineatura (_) dopo l’identificatore del tipo. Tuttavia il primo carattere del nome non può essere un numero. • I nomi delle variabili sono sensibili alle maiuscole/minuscole Bioinformatica

  17. Variabili scalari (3) • PERL riserva per sé stesso nomi di variabili di un solo carattere che non iniziano con un carattere alfabetico o di sottolineatura. Le variabili come $_, $”, $/, $2 e $$ sono variabili speciali la cui funzione sarà spiegata in seguito. • Le variabili scalari in PERL non devono essere dichiarate o inizializzate prima di poterle usare. • Per creare una variabile scalare è sufficiente usarla. PERL usa un valore predefinito quando una variabile non è inizializzata. Se è usata come numero PERL userà il valore 0, se è usata come stringa PERL userà la stringa vuota “”. Bioinformatica

  18. La variabile speciale $_ • PERL dispone di una variabile speciale $_ il cui valore è usato come “predefinito” da molti operatori e funzioni. • Per esempio se si digita print senza specificare una variabile scalare o un letterale stringa da stampare, PERL stamperà il valore corrente di $_: $_=“Dark Side of the Moon” print; # Stampa il valore di $_ Bioinformatica

  19. Espressioni • Un semplice programma PERL: • Un’espressione (in rosso) in PERL è semplicemente qualcosa con un valore. • Per esempio 2 è un’espressione valida. • I valori delle espressioni sono calcolati all’esecuzione del programma. #!/usr/bin/perl –w $radius=50; $area=3.14159*($radius ** 2); print $area Bioinformatica

  20. Operatori: Assegnazione • L’operatore di assegnazione = prende il valore a destra e lo inserisce nella variabile a sinistra: • L’operando di sinistra deve essere qualcosa a cui può essere assegnato un valore. L’operando a destra può essere qualsiasi tipo di espressione. L’intera assegnazione è un’espressione: $title=“Gone with the wind”; $pi=3.14159; $a=$b=$c=97; $count=$count+1; Bioinformatica

  21. Operatori numerici Bioinformatica

  22. Operatori stringa • Concatenazione: • Interpolazione di variabili: $a=“Hello, World!”; $b=“Nice to meet you”; $c=$a . $b; $name=“John”; print “I went to the store with $name.”; Bioinformatica

  23. Operatori stringa (2) • L’interpolazione si può impedire usando gli apici singoli o facendo precedere l’identificatore della variabile da un backslash: • La concatenazione si può eseguire così: $name=“Ringo”; print ‘I used the variable $name’ print “I used the variable \$name” $fruit1=“apples”; $fruit2=“and oranges”; $bowl=“$fruit1 $fruit2”; Bioinformatica

  24. Operatori stringa (3) • Se il nome di una variabile è seguito immediatamente da lettere, numeri o apici, PERL non sarà in grado di distinguere chiaramente dove finisce il nome della variabile e inizia il resto della stringa. In questo caso si possono usare parentesi graffe { } attorno al nome della variabile: $date=“Thurs”; Print “I went to the fair on ${date}day”; $name=“Bob”; Print “This is ${name}’s house”; Bioinformatica

  25. Operatori stringa (4) • x è l’operatore di ripetizione; prende due valori, una stringa da ripetere e il numero di volte da ripeterla: $line=“-” x 70; # Stampa 70 volte – e memorizza il risultato in $line Bioinformatica

  26. Operatori unari • Operatori unari con simbolo: • Operatori unari con nome: -6; # 6 negativo -(-5); # 5 positivo Bioinformatica

  27. Incremento e decremento $counter++; # incrementa la variabile counter $counter--; # decrementa la variabile counter $a=“c9”; $a++; print $a; # stampa d0 $a=“zzz”; $a++; print $a; # stampa aaaa Bioinformatica

  28. Operatore angolare < > • Questo operatore è usato per leggere e scrivere file. La sua forma più semplice <STDIN> indica a PERL che una riga di input dovrebbe essere letta dal dispositivo di input (tastiera): • La riga di testo letta da <STDIN> include anche il carattere di nuova riga digitato premendo invio. E’ possibile rimuoverlo utilizzando la funzione chomp: print “What size is your shoe?”; $size=<STDIN>; print “Your shoe size is $size. Thank you!\n”; print “What size is your shoe?”; $size=<STDIN>; Chomp $size; print “Your shoe size is $size. Thank you!\n”; Bioinformatica

  29. Altri operatori di assegnazione • La regola generale per creare un’assegnazione con un operatore è la seguente: • variabile operatore=espressione • Questa forma di assegnazione equivale a: • variabile=variabile operatore espressione • Ad esempio: $a=$a+3; $a+=3; # uguale alla riga precedente $line.=“, at the end” # accoda la stringa “, at…” a $line $t%=67; # divide $t per 67 e inserisce il resto in $t Bioinformatica

  30. Considerazioni su stringhe e numeri • PERL consente spesso di usare numeri e stringhe in modo intercambiabile. Se un elemento ha l’aspetto di un numero PERL può usarlo come tale se ne ha bisogno: $a=42; # un numero print $a+18; # stampa 60 $b=“50”; # una stringa print $b-10; # stampa 40 Bioinformatica

  31. Considerazioni su stringhe e numeri (2) • Allo stesso modo se un elemento ha l’aspetto di un numero, quando PERL necessita di una stringa può rappresentarlo come tale: • Se un elemento non ha l’aspetto di un numero ma viene usato dove era previsto l’uso di un numero PERL usa al suo posto il valore 0: $a=42/3; # un numero $a=$a . “Hello”; # usa un numero come stringa print $a; # stampa “14Hello” $a=“Hello, World!”; print $a+6; # visualizza il numero 6, la stringa vale 0 # PERL ci avvisa della circostanza se attiviamo –w sulla riga #! Bioinformatica

  32. Controllare il flusso del programma • Blocchi di istruzioni; • Operatori; • Cicli; • Etichette; • Come uscire da PERL dopo l’esecuzione di un programma; Bioinformatica

  33. Blocchi • Il metodo principale per raggruppare le istruzioni in PERL è rappresentato dai blocchi: { istruzione_a; istruzione_b; istruzione_c; } { istruzione_a; { istruzione_x; istruzione_y; } } Bioinformatica

  34. L’istruzione if if (espressione) blocco if (espressione) blocco1 else blocco2 $r=<STDIN>; chomp $r; If ($r == 10) { print “$r is 10”; } else { print “$r is something other than 10…”; $r=10; print “$r has been set to 10”; } Bioinformatica

  35. Elsif if (espressione1) blocco1 elsif (espressione2) blocco2 else blocco3 $r=<STDIN>; if ($r == 10) { print “$r is 10!”; } elsif ($r == 20) { print “$r is 20!”; } else { print “$r is neither 10 nor 20”; } Bioinformatica

  36. Altri operatori relazionali Bioinformatica

  37. Uso improprio degli operatori relazionali • Consideriamo il seguente esempio: • Dato che PERL si aspetta valori numerici, le stringhe vengono valutate 0, per cui l’espressione precedente è simile a $first=“Simon”; $last=“Simple”; if ($first == $last) { print “The words are the same!\n”; } if (0 == 0) Bioinformatica

  38. Operatori relazionali per valori non numerici Bioinformatica

  39. Significato di “vero” per PERL • Il numero 0 è falso; • La stringa vuota “” e la stringa “0” sono false; • Il valore non definito undef è falso; • Tutto il resto è vero. • Quando si verifica un’espressione per vedere se è vera o falsa questa viene semplificata, quindi viene convertita in un valore scalare per poter determinare se è vera o falsa. Bioinformatica

  40. Operatori logici Bioinformatica

  41. Circuito breve • La valutazione di un’espressione logica viene interrotta quando può essere determinata la verità (circuito breve): • In questo caso se $a o $b è falsa, deve essere valutata la parte destra dell’operatore or e il messaggio viene modificato. Se sia $a sia $b sono vere, l’operatore or deve essere vero e non è necessario valutare la parte destra. $message = “A e B sono entrambe vere.” ($a and $b) or $message=“A e B non sono entrambe vere” Bioinformatica

  42. Ancora sugli operatori logici • Gli operatori logici di PERL non si limitano a restituire solo vero o falso. In realtà restituiscono l’ultimo valore valutato. • Per es. l’espressione 5 && 7 restituisce 7. • Se $old è vera l’espressione $new = $old è vera. Questo è più conciso di: $new=$old || “default” $new=$old; if (! $old) { $new=“default”; } Bioinformatica

  43. Cicli while e for while (espressione) blocco $counter=0; while ($counter < 10) { print “Still counting…$counter\n”; $counter++; } For (inizializzazione; test; incremento) blocco for ($a=0; $a<10; $a=$a+2) { print “a is now $a\n”; } Bioinformatica

  44. Disposizioni strane… • Le istruzioni if possono usare un altro tipo di sintassi. Se all’interno del blocco if c’è una sola espressione, questa può precedere le istruzioni if: • diventa: if (test_espressione) { espressione; } espressione if (test_espressione); $correct=1 if ($guess == $question); Print “No pi for you!” if ($ratio != 3.14159); Bioinformatica

  45. Controllo più preciso • L’istruzione last permette di uscire dal blocco più interno del ciclo in esecuzione: while($i<15) { last if ($i==5); # il ciclo termina quando $i vale 5 $i++; } for($i=0; $i<100; $i++) { for($j=0; $j<100; $j++) { if ($i * $j == 140) { print “The product of $i and $j is 140\n”; last; } } } Bioinformatica

  46. L’istruzione next • L’istruzione next riporta il controllo di nuovo nel ciclo e fa ricominciare l’iterazione successiva del ciclo, se questo non è stato completato. • L’istruzione redo è simile a next a eccezione del fatto che la condizione non viene rivalutata e PERL riprende l’esecuzione dall’inizio del blocco senza controllare se la condizione di fine è soddisfatta o no. for($i=0; $i<100; $i++) { next if (not $i % 2); print “An odd number=$i\n”; } Bioinformatica

  47. Etichette • PERL consente di etichettare i blocchi e alcune istruzioni di ciclo (for, while): MIOBLOCCO: { } OUTER: while($expr) { INNER: while($expr) { statement; } } Bioinformatica

  48. Etichette e last, redo, next • Le istruzioni last, redo e next possono prendere un’etichetta come argomento. Così è possibile uscire da un blocco specifico. Normalmente non sarebbe possibile terminare un ciclo esterno da un ciclo interno, a meno di ricorrere a complicazioni del codice. Invece… OUTER: for($i=0; $i<100; $i++) { for($j=0; $j<100; $j++) { if ($i * $j == 140) { print “The product of $i and $j is 140\n”; last OUTER; } } } Bioinformatica

  49. Uscire da PERL • Quando PERL incontra un’istruzione exit, l’esecuzione del programma viene interrotta e PERL restituisce lo stato di uscita al sistema operativo. Uno stato di uscita 0 significa che tutto è andato bene: if ($user_response eq ‘quit’) { print “Good bye\n”; exit 0; } Bioinformatica

  50. Liste • Quando si desidera fare riferimento a molti oggetti in PERL, vengono usati gli elenchi. Esistono tre modi per rappresentare gli elenchi: usando liste, array e hash; • Le liste rappresentano la forma più semplice di elenchi; una lista non è altro che un insieme di scalari; • Ogni scalare nella lista prende il nome di elemento della lista; • Le liste di PERL possono contenere qualsiasi numero di elementi scalari; Bioinformatica

More Related