Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

gestione file su disco

4 views
Skip to first unread message

liftman

unread,
Apr 5, 2015, 4:27:15 PM4/5/15
to
Visto che non scrive mai nessuno, io ne approfitto :-)

Ho ben chiaro come aprire un file su disco, come leggerlo, cancellarlo o
semplicemente crearlo. Quello che non mi č ben chiaro č quando si cerca un
file e lui non c'č.
Mi spiego meglio con uno dei tanti esempi trovati in rete:

#!/usr/bin/perl
print "Inserisci il nome del file che vuoi modificaren";
chomp($file=<StdIN>);
if (-e $file) {
..
} else {
die "File non trovaton";
}

piů o meno gli esempi sono tutti su questa falsariga, quindi viene spontaneo
pensare che se il file non viene trovato, sia obbligatorio fermare
l'esecuzione ed uscire con il messaggio di errore (die "File non trovaton";).

In nessun esempio (il che lascia pensare che i vari tutorial siano per la
maggior parte dei cut&paste...) si trova un'uscita diversa tipo:

else {
print "ma chi se ne frega, io proseguo e ti arrangi";
}

Alla fine la domanda d'ordinanza: ci sono controindicazioni a non usare
"die"?

--
Fri(END), Boyfri(END), Girlfri(END), Bestfri(END). Everything has an END
except...Fam(ILY)! It Has 3 Letters that say I LOVE YOU

enoquick

unread,
Apr 6, 2015, 8:48:16 AM4/6/15
to
Il 05/04/2015 15:27, liftman ha scritto:
> Visto che non scrive mai nessuno, io ne approfitto :-)
>
> Ho ben chiaro come aprire un file su disco, come leggerlo, cancellarlo o
> semplicemente crearlo. Quello che non mi è ben chiaro è quando si cerca
> un file e lui non c'è.
> Mi spiego meglio con uno dei tanti esempi trovati in rete:
>
> #!/usr/bin/perl
> print "Inserisci il nome del file che vuoi modificaren";
> chomp($file=<StdIN>);
> if (-e $file) {
> ..
> } else {
> die "File non trovaton";
> }
>
> più o meno gli esempi sono tutti su questa falsariga, quindi viene
> spontaneo pensare che se il file non viene trovato, sia obbligatorio
> fermare l'esecuzione ed uscire con il messaggio di errore (die "File non
> trovaton";).
>
> In nessun esempio (il che lascia pensare che i vari tutorial siano per
> la maggior parte dei cut&paste...) si trova un'uscita diversa tipo:
>
> else {
> print "ma chi se ne frega, io proseguo e ti arrangi";
> }
>
> Alla fine la domanda d'ordinanza: ci sono controindicazioni a non usare
> "die"?
>

die dovrebbe essere usato per gli errori imprevisti non per gli errori
utente
Se un utente immette un nome file non esistente si stampa su stderr il
messaggio di errore e si esce con un exit code != 0

Inoltre nella sintassi dei comandi unix (ma anche windows) non si fanno
programmi a linea di comando che chiedono 'dammi il nome del file'

Si usa la sintassi std di unix:
<comando> <opzioni> <nomefile>...


liftman

unread,
Apr 6, 2015, 9:34:04 AM4/6/15
to

"enoquick" <enoq...@gmail.com> ha scritto nel messaggio
news:mftvaf$r9f$1...@virtdiesel.mng.cu.mi.it...

>> Alla fine la domanda d'ordinanza: ci sono controindicazioni a non usare
>> "die"?
>>
>
> die dovrebbe essere usato per gli errori imprevisti non per gli errori
> utente

Sui certo, ma lo scopo della mia domanda era per far in modo che lo script
non si interrompa se il file cercato non esiste.

Banalmente se sostituisco:

else {
die "File non trovato";
}

con:

else {
print "File non trovato";
}

raggiungerei il mio scopo, evitanto eventuali controindicazioni, perchè dai
vari esempi trovati nei tutorial (e pure su un paio di libriccini
sull'argomento), questa eventuaità non viene menzionata. Se
controindicazioni non ce ne sono, meglio così, elimino il "die" in favore di
qualcosa d'altro.

> Inoltre nella sintassi dei comandi unix (ma anche windows) non si fanno
> programmi a linea di comando che chiedono 'dammi il nome del file'

vabbè... in questo caso l'esempio suppongo servisse per far familiarizzare
con la gestione dei file e non per mostrare lo "stato dell'arte della
programmazione". :-)

enoquick

unread,
Apr 8, 2015, 8:41:36 AM4/8/15
to
Il 06/04/2015 08:34, liftman ha scritto:
>
> "enoquick" <enoq...@gmail.com> ha scritto nel messaggio
> news:mftvaf$r9f$1...@virtdiesel.mng.cu.mi.it...
>
>>> Alla fine la domanda d'ordinanza: ci sono controindicazioni a non usare
>>> "die"?
>>>
>>
>> die dovrebbe essere usato per gli errori imprevisti non per gli errori
>> utente
>
> Sui certo, ma lo scopo della mia domanda era per far in modo che lo
> script non si interrompa se il file cercato non esiste.
>



basta un test
ad esempio:

if (-e <file>) #vero se file esiste


if (-r <file>) #vero se file esiste ed è leggibile

ecc..


oppure si puo usare un eval { <istruzioni> }
in $@ si ha il messaggio di errore
e' simile ad un try { } catch((...) {}
in altri linguaggi come C++ e java (se li conosci)


> Banalmente se sostituisco:
>
> else {
> die "File non trovato";
> }
>
> con:
>
> else {
> print "File non trovato";
> }
>


gli errori si stampano su stderr

> raggiungerei il mio scopo, evitanto eventuali controindicazioni, perchè
> dai vari esempi trovati nei tutorial (e pure su un paio di libriccini
> sull'argomento), questa eventuaità non viene menzionata. Se
> controindicazioni non ce ne sono, meglio così, elimino il "die" in
> favore di qualcosa d'altro.
>
>> Inoltre nella sintassi dei comandi unix (ma anche windows) non si
>> fanno programmi a linea di comando che chiedono 'dammi il nome del file'
>
> vabbè... in questo caso l'esempio suppongo servisse per far
> familiarizzare con la gestione dei file e non per mostrare lo "stato
> dell'arte della programmazione". :-)
>
>
ok


liftman

unread,
Apr 8, 2015, 9:46:11 AM4/8/15
to

"enoquick" <enoq...@gmail.com> ha scritto nel messaggio
news:mg37lv$jus$1...@virtdiesel.mng.cu.mi.it...

>> Sui certo, ma lo scopo della mia domanda era per far in modo che lo
>> script non si interrompa se il file cercato non esiste.
>>
>
>
>
> basta un test
> ad esempio:
>
> if (-e <file>) #vero se file esiste
>
>
> if (-r <file>) #vero se file esiste ed è leggibile
>
> ecc..
>

Ok, grazie!

> oppure si puo usare un eval { <istruzioni> }
> in $@ si ha il messaggio di errore
> e' simile ad un try { } catch((...) {}
> in altri linguaggi come C++ e java (se li conosci)

ehm no.. :(

enoquick

unread,
Apr 8, 2015, 8:42:25 PM4/8/15
to
Il 08/04/2015 08:46, liftman ha scritto:
>
> "enoquick" <enoq...@gmail.com> ha scritto nel messaggio
> news:mg37lv$jus$1...@virtdiesel.mng.cu.mi.it...
>
>>> Sui certo, ma lo scopo della mia domanda era per far in modo che lo
>>> script non si interrompa se il file cercato non esiste.
>>>
>>
>>
>>
>> basta un test
>> ad esempio:
>>
>> if (-e <file>) #vero se file esiste
>>
>>
>> if (-r <file>) #vero se file esiste ed è leggibile
>>
>> ecc..
>>
>
> Ok, grazie!
>
>> oppure si puo usare un eval { <istruzioni> }
>> in $@ si ha il messaggio di errore
>> e' simile ad un try { } catch((...) {}
>> in altri linguaggi come C++ e java (se li conosci)
>
> ehm no.. :(
>
>
>

sai tu quello che vuoi

0 new messages