[29] Perché il mio script non riesce a leggere da STDIN dopo che gli ho dato EOF (^D su Unix, ^Z su MS-DOS)?
Alcune librerie stdio impostano un flag eof (fine del file) che ha
bisogno di essere azzerato. Il modulo POSIX definisce clearerr() che
può essere utilizzato. Questo è tecnicamente il modo
corretto per farlo. Ci sono però altre scapaptoie meno affidabili:
Tentare di memorizzare il puntatore della posizione nel file e poi spostarsi su
di esso, come ad esempio:
$dove = tell(LOG);
seek(LOG, $dove, 0);
Se questo non funziona, provare a spostarsi in una parte diversa del
file e poi di nuovo alla posizione memorizzata.
Se questo non funziona, provare a spostarsi in una parte diversa del
file, leggere qualcosa, e poi spostarsi di nuovo alla posizione memorizzata.
Se questo non funziona, lasciar perdere la libreria stdio e utilizzare sysread.
Copyright (c) 1997, 1998, 1999, 2000, 2001 Tom Christiansen e Nathan
Torkington. Tutti i diritti riservati.
Questa documentazione è libera; puoi ridistribuirla e/o
modificarla secondo gli stessi termini applicati al Perl.
Indipendentemente dalle modalitè di distribuzione, tutti gli esempi di
codice in questo file sono rilasciati al pubblico dominio. Potete, e
siete incoraggiati a farlo, utilizzare il presente codice o qualunque
forma derivata da esso nei vostri programmi per divertimento o per profitto.
Un semplice commento nel codice che dia riconoscimento alle FAQ sarebbe cortese
ma non è obbligatorio.
mongers@perl.it è la lista ufficiale di Perl Mongers Italia per
porre quesiti di tipo tecnico, per rimanere aggiornato su meeting,
incontri, manifestazioni e novità su Perl.it. Iscriviti!