LAB06: Abandon all hope, ye who enter here

LAB06: Abandon all hope, ye who enter here

Nello scorso laboratorio abbiamo visto due cose molto importanti: come ricevere parametri dalla shell e come leggere file. Nonostante la spiegazione anti-caos preventiva, sembra che molti di voi le trovino problematiche e quindi oggi cercheremo di fare degli esercizi mirati su questi argomenti nuovi, che sono fondamentali per raggiungere gli scopi del corso (fare un programma perl che c’entri qualcosa con la genomica).

Parametri da linea di comando

Seguono tre semplici esercizi per familiarizzarvi con @ARGV. Ricordate che @ARGV e’ un semplice array, l’unica differenza e’ che perl ve lo fornisce automaticamente all’inizio del programma (quindi non dovete definirlo o crearlo voi, potete usarlo direttamente). Contiene gia’ tutti i parametri che gli avete dato sul terminale. Per esempio, se avete lanciato il vostro programma prog.pl cosi’:

$ perl prog.pl arg1 arg2 arg3

perl crea per voi @ARGV e ci mette le tre stringhe “arg1”, “arg2”, “arg3”. Nei prossimi esercizi non vi daremo un codice da cui partire, potete recuperarlo dai programmi che avete scritto o dagli appunti o scriverlo direttamente voi. Come al solito lavorate in una cartella lab06 che creerete.

Esercizio 1

Scrivere un programma che stampa la somma dei parametri che gli vengono passati. Per esempio se lo chiamiamo somma.pl, dovrebbe comportarsi cosi:

$ perl somma.pl 4 3 -2
5

Il dollaro nella prima riga serve solo a ricordarvi che la prima riga la scrivete voi sul terminale e la seconda e’ l’output del programma.

Esercizio 2

Scrivere un programma che prende tre parametri. Il primo e il terzo dovranno essere numeri e il secondo sara’ o “+” o “-”. A seconda del secondo parametri stampare la somma o la differenza degli altri. Se c’e’ un numero sbagliato di parametri oppure il secondo parametro non e’ uno di “+” o “-”, stampare un errore che dica cosa non va. Se lo chiamiamo operazione.pl, dovrebbe comportarsi cosi’:

$ perl operazione.pl 4 + 2
6
$ perl operazione.pl 7 - 5
2
$ perl operazione.pl 4 ciao
Errore, perche' bla bla...

Esercizio 3

Scrivere un programma che conta quante volte compare ogni parametro. Per farlo avrete bisogno di una hash che avra’ come chiavi i parametri e come valori quante volte ogni parametro compare in @ARGV. Per esempio:

$ perl conta_parametri.pl ob la di ob la da
ob: 2
la: 2
di: 1
da: 1

Quando avete finite consegnate i tre programmi con codice hw6.1.

Lettura files

Insieme ai parametri, la lettura di file e’ l’altro modo che il vostro programma ha per ricevere dati dall’esterno. Ricordate che e’ opportuno mettere tutti i controlli che avete visto ieri in aula:

  1. controllare che i parametri necessari al programma siano in @ARGV;
  2. controllare che il file sia stato aperto correttamente;
  3. se c’e’ qualcosa che non va, stampare un messaggio di errore che aiuti a capire a chi usa il programma qual’e’ il problema e uscire.

I controlli non sono obbligatori per lo svolgimento degli esercizi, ma vi consigliamo caldamente di metterli.

Esercizio 4

Scrivere un programma che si comporti come il commando head. Deve prendere come parametro un nome di file, aprirlo (con open), leggerlo e stamparne le prime 5 righe. Testatelo su un file di testo che abbia piu’ di 5 righe, per esempio uno dei programmi che avete gia’ scritto.

Un’aggiunta opzionale e’ ricevere un numero N come secondo parametro e stampare N righe invece di 5.

Quando avete finite consegnate il programma con codice hw6.2.

One thought on “LAB06: Abandon all hope, ye who enter here

Leave a Reply

Your email address will not be published. Required fields are marked *