indietro

  • readline ESPR

    Legge dal filehandle il cui typeglob è contenuto in ESPR. In contesto scalare, ogni chiamata legge e restituisce la prossima linea, fino a quando la fine del file non viene raggiunta, dopodiché le chiamate successive restituiscono il valore indefinito. In contesto lista, legge il file fino alla fine e restituisce una lista di linee. Va notato che la nozione di "linea" dipende da ciò che è stato definito con $/ o $INPUT_RECORD_SEPARATOR [record separatore di input, NdT]. Si veda perlvar/"$/".

    Quando $/ è stato impostato a undef, e readline() viene chiamato in contesto scalare (ossia in slurp mode [modalità slurp, NdT]) e se il file è vuoto, restituisce '' la prima volta, e undef le volte successive.

    Questa è la funzione utilizzata internamente dall'implementazione dell'operatore <ESPR>, ma può essere usata direttamente. L'operatore <ESPR> viene discusso in dettaglio in perlop/"I/O Operators" ["Operatori di I/O", NdT].

        $line = <STDIN>;
        $line = readline(*STDIN);		# stessa cosa

    Se readline incontra un errore del sistema operativo, $! verrà impostato con il messaggio d'errore corrispondente. Può essere utile controllare $! quando state leggendo dai filehandle di cui non vi fidate, come tty, oppure un socket. Il seguente esempio usa readline in forma di operatore, e svolge i passi necessari ad assicurarsi che readline sia andato a buon fine.

        for (;;) {
            undef $!;
            unless (defined( $linea = <> )) {
                die $! if $!;
                last; # raggiunto EOF
            }
            # ...
        }