IL PRIMO PROGRAMMA IN PERL Come in ogni corso di introduzione ad un linguaggio di programmazione, proviamo a scrivere l’ormai celebre primo programma di prova. Apriamo un editor (nano, emacs, kwrite) e scriviamo il seguente programma Salviamo il programma, ad esempio con il nome prova.pl, ricordiamoci di renderlo eseguibile ed eseguiamolo BIOINFO3 - Lezione 20 1 ESECUZIONE DEL PROGRAMMA L’esecuzione delle istruzioni avviene in sequenza, ovviamente nell’ordine in cui sono scritte nel file. Nell’esempio c’è una sola istruzione eseguibile, l’istruzione di print che stampa sullo standard output (sul video, o meglio sulla finestra di shell in cui è stato eseguito il comando) la stringa indicata tra “”. Nel nostro caso viene stampato Ciao ed il carattere di “vai a capo” (\n). Senza questo carattere di a capo il prompt UNIX sarebbe stato scritto immediatamente di seguito al Ciao, sulla stessa riga. BIOINFO3 - Lezione 20 2 COMMENTI Abbiamo visto finora il significato dei simboli #! posti nella prima riga, che dicono all’interprete di comandi UNIX (la “shell”) con quale programma (/usr/bin/perl, cioè l’interprete PERL) interpretare il resto del file. In ogni altra riga è possibile inserire dei commenti dopo il carattere #, cioè delle frasi che vengono ignorate dell’interprete e servono a chi scrive il programma o a chi dovrà magari leggerlo o modificarlo successivamente. I commenti vengono usati per descrivere il programma, la sua versione, il suo funzionamento, il suo input ed output, identificarne alcune parti importanti, spiegare il significato di alcune variabili o perché si siano usate certe istruzioni o anche solo per contenere la firma dell’autore e la data di realizzazione e di successive modifiche Il consiglio è quello di imparare a commentare quanto più possibile i propri programmi, anche se per ragioni di tempo si finisce sempre per non mettere alcun commento. Ogni volta che l’interprete incontra il carattere # egli ignora il testo scritto da quel punto fino alla fine della riga BIOINFO3 - Lezione 20 3 NOMI E TIPI DELLE VARIABILI Esistono diversi tipi di variabili in Perl, identificate grazie al primo carattere del loro nome. I caratteri successivi potranno essere liberamente lettere o numeri o il carattere di sottolineatura _ $ variabili “scalari” Sono così chiamate le normali variabili, che possono contenere valori numerici o stringhe. Il loro nome inizia con $ ad esempio $a $questa_variabile $1 @ array Il nome di una variabile di tipo array inizia con il simbolo @ Esempi: @a @nomi % array associativi Il nome di una variabile di tipo array associativo inizia con il simbolo % Esempi: %a %prezzi file handle Sono delle variabili associate ai file aperti in lettura o scrittura. Normalmente si usano nomi formati da lettere maiuscole Esempio: H FILE_INPUT STDIN STDOUT BIOINFO3 - Lezione 20 4 ASSEGNAMENTO Ha la classica forma variabile=espressione; (N.B. ricordarsi il ;) 3 Esempi: $a=3; $a $a=$a+1; $a $a 3 4 $ricavo=1000; $spese=800; $guadagno=$ricavo-$spese; BIOINFO3 - Lezione 20 $a=$a+1=3+1=4 $ricavo 1000 $spese 800 $guadagno=$ricavo-$spese= 1000-800=200 $guadagno 200 5 ASSEGNAMENTO Se una variabile non è mai stata usata prima, essa è creata dall’assegnamento. E la stessa variabile potrà contenere in seguito indifferentemente numeri (interi o reali) o stringhe $b=1; $b 1 $b=$b+0.33; $b 1.33 $b=“Mario”; $b Mario Il valore di una variabile non ancora usata viene assunto 0 oppure la stringa vuota a seconda del contesto in cui viene usato. Se, ad esempio, in una somma di numeri, sarà 0. BIOINFO3 - Lezione 20 6 USO DEGLI APICI Abbiamo detto che le stringhe debbono essere racchiuse tra apici. Entrambi i tipi di apici (doppi o singoli) sono ammessi dal Perl, però con effetto diverso. Gli apici doppi (“) provocano la sostituzione, con il loro valore, di eventuali variabili contenute all’interno della stringa, nonché l’interpretazione dei caratteri di controllo (es. /n). Gli apici singoli (‘) non effettuano invece nessuna sostituzione. $a=10; $a 10 $b=‘Io ho $a anni’; $b Io ho $a anni $c=“Io ho $a anni”; $c Io ho 10 anni BIOINFO3 - Lezione 20 7 CONCATENAMENTO DI STRINGHE E’ possibile concatenare due stringhe usando il simbolo “.” $n=“Mario”; $n Mario $c=‘Rossi’; $a=$n.$c; $b=$n.” “.$c; $b=$b.”.”; $c Rossi $a MarioRossi $b Mario Rossi $b Mario Rossi. Esiste una forma implicita del comando che permette di accodare una stringa alla stringa data $b.=“.”; BIOINFO3 - Lezione 20 $b=$b.”.”; 8 OPERATORI ARITMETICI Gli operatori che si possono usare nelle espressioni sono i classici operatori aritmetici, logici o anche delle funzioni speciali + * / addizione sottrazione prodotto divisione % ** resto della divisione (5%2=1, 4%2=0) elevamento a potenza (2**5=32, 5**2=25) ++ -- incremento di 1 decremento di 1 BIOINFO3 - Lezione 20 9 OPERATORI DI ASSEGNAMENTO Anche per gli operatori aritmetici, come per le stringhe (.=), esiste un operatore implicito di assegnamento. $a 9 $a+=1; $a=$a+1; $a 10 $a-=2; $a=$a-2; $a 8 $a*=3; $a=$a*3; $a 24 $a/=4; $a=$a/4; $a 6 $a%=5; $a=$a%5; $a 1 BIOINFO3 - Lezione 20 10 OPERATORE DI INCREMENTO L’assegnamento $a=$a+1 può essere ottenuto anche attraverso i due operatori $a++ (forma postfissa) e ++$a (forma prefissa). Nei due casi cambia però il risultato restituito se l’operatore viene usato in una espressione. Nella forma postfissa viene prima restituito il valore e poi effettuato l’incremento mentre in quella prefissa prima si effettua l’incremento e poi si restituisce il valore. Analogamente per l’operatore --. $a 5 $b 5 $a 6 $a 5 $b 6 $a 6 $a=5; $b=$a++; $a=5; $b=++$a; BIOINFO3 - Lezione 20 11 ESERCIZIO Scrivere un programma Perl per: Assegnare alla variabile $a il valore 10, assegnare alla variabile $b il valore 5, assegnare alla variabile $c il prodotto di $a con la somma di 5 a $b, assegnare alla variabile $d il resto della divisione di $c per 2, Stampare “Risultato=“ seguito dal valore di $d e dal carattere di “a capo” \n. Quanto vale $d alla fine del programma? BIOINFO3 - Lezione 20 12 ESERCIZIO Scrivere un programma Perl per: Assegnare alla variabile $s1 la stringa “Ciao”, assegnare alla variabile $s2 la stringa ‘carissimi’, aggiungere alla fine della stringa $s1 una virgola ed il carattere di “a capo” Assegnare alla stringa $s3 la concatenazione delle variabili $s1 e $s2 Stampare $s3 seguita dal carattere di “a capo” e da “->”. Cosa vedremo a video alla fine del programma? Notare gli apici BIOINFO3 - Lezione 20 13 RIEPILOGO •L’istruzione print •I commenti •Nomi e tipi delle variabili •L’assegnamento •L’uso degli apici •Concatenamento di stringhe •Operatori: aritmetici, di assegnamento, di incremento BIOINFO3 - Lezione 20 14