Dopo aver parlato dei blocchi, può essere utile introdurre il concetto di "verifica" sui file. Ad esempio, avendo uno script del tipo:
#!/usr/bin/perl
print "Inserisci il nome del file che vuoi modificaren";
chomp($file=<StdIN>);
.....
E' probabile che l'utente indichi il file correttamente e che lo script proceda con successo; ma se ciò dovesse non accadere? Cosa succederebbe se l'utente inserisse come nome del file "caio" invece di "ciao"? Semplicemente lo script andrebbe ad editare un nuovo file (vuoto), che non è certo quello che volevamo! Tale inconveniente può essere superato come segue:
#!/usr/bin/perl
print "Inserisci il nome del file che vuoi modificaren";
chomp($file=<StdIN>);
if (-e $file) {
....
} else {
die "File non trovaton";
}
Cosa c'è di diverso da prima? A parte il blocco if/else, notate quel "if (-e $file)": rendendolo in italiano potrebbe essere "se esiste $file". Quindi l'interprete perl andrà prima a vedere se tal file esiste, ed in caso positivo passerà alla modifica. Dovesse non esistere, si blocca e visualizza un messaggio (il file non è stato trovato).
Ovviamente vi sono altri operatori oltre a "-e" ; vediamo i più importanti:
-z il file ha dimensioni nulle
-s il file ha dimensioni non nulle (restituisce le
dimensioni
-f il file è un file regolare
-d il file è una directory
-l il file è un link
-r il file è leggibile
-w il file è scrivibile
-x il file è eseguibile
-T il file è un file di testo
-B il file è un file binario (opposto di -B)
Sintetizziamo tutto con un esempio:
#!/usr/bin/perl
print "Inserisci il nome del filen";
chomp($file=<StdIN>);
print "Leggibilen" if -r $file;
print "Scrivibilen" if -w $file;
print "Eseguibilen" if -x $file;
print "Il file ha dimensioni nullen" if -z $file;
print "E' una directoryn" if -d $file;
print "E' un linkn" if -l $file;