REDIREZIONE INPUT E OUTPUT
Se viene effettuata una redirezione dell’input e/o dell’output al livello della
shell UNIX, quando viene invocata l’esecuzione del programma, dal punto di
vista del programma ciò non comporta alcuna variazione. Il programma
leggerà i dati sempre da STDIN (e crederà di leggerli da tastiera) e li scriverà
su STDOUT, convinto di scriverli a video!
programma
file-input
file-output
programma <file-input >file-output
In questo caso però, leggendo l’input da un file, quando si raggiunge la fine del
file l’espressione < > restituisce il valore falso e può quindi far terminare un
ciclo while
BIOINFO3 - Lezione 23
1
ESEMPIO DI REDIREZIONE
Esempio. Leggere lo standard input e scriverlo in standard output
BIOINFO3 - Lezione 23
2
IL CARATTERE DI ESCAPE
Sinora abbiamo visto il carattere di “vai a capo”. In realtà è il carattere di
backslash \ a funzionare da “carattere di escape”. Se lo usiamo in una stringa
tra “ esso non viene stampato e permette di attribuire un significato
particolare al carattere successivo. In questo senso esso permette di scappare
(ESCAPE) dal significato normale dei caratteri.
\n
new-line
\t
tabulazione
\a
beep
\\
per stampare un \
\”
per stampare un “
\$
per stampare un $
Esempio
BIOINFO3 - Lezione 23
3
ARRAY
Abbiamo visto che in Perl le variabili di tipo array iniziano con il
simbolo @. E’ possibile assegnare tutti gli elementi dell’array con
un’unica istruzione
@nomi=(‘Marco’,’Luigi’,’Anna’,’Chiara’);
Oppure si possono assegnare (o riferire) i singoli elementi uno per uno.
Notare che quando ci si riferisce ai singoli elementi specificandone
l’indice numerico non si usa più @ ma $
$nomi[2]=‘Anna’;
$nomi[0]=‘Marco’;
$nomi[1]=‘Luigi’;
$nomi[3]=‘Chiara’;
BIOINFO3 - Lezione 23
4
ARRAY
Possiamo stampare l’array nel suo complesso
E’ necessario usare il carattere di escape \ per stampare il carattere @, che
altrimenti verrebbe interpretato come la prima lettera di una variabile di tipo
array (come avviene effettivamente per @nomi)
Possiamo stampare i singoli elementi con un ciclo for
BIOINFO3 - Lezione 23
5
ASSEGNAMENTI DI ARRAY
Se usiamo una variabile di tipo array in un contesto scalare (es $n=@nomi) il
valore restituito è il numero di elementi dell’array.
E’ possibile assegnare un intero array ad un altro array
Si possono fare anche assegnamenti “misti” assegnando ad alcune variabili i
primi elementi dell’array ed eventualmente i rimanenti ad un altro array
BIOINFO3 - Lezione 23
6
ARRAY
Una variabile particolare permette di ricavare l’indice massimo di un array.
Ha il formato $#nome-array
Esempio. Leggere un file di nomi (attraverso redirezione) e stamparli ordinati
La funzione sort restituisce un array
ordinato a partire dall’array dato (che
non viene perciò modificato!)
BIOINFO3 - Lezione 23
7
RIEPILOGO
•Il carattere di escape
•Array e liste
BIOINFO3 - Lezione 23
8
Scarica

bioinfo3