_  _   ,_
/^\/^\-/ @D
~(________/ PERL.LT
|L |L
L L
Straipsniai  Funkcijos 
Funkcijos/eof - patikrina filehandle'ą iki pabaigos
  • eof FILEHANDLE
  • eof ()
  • eof

    Grąžina 1, jei kitas FILEHANDLE nuskaitymas grąžins failo pabaigą ar jei FILEHANDLE neatidarytas. FILEHANDLE gali būti išsireiškimas, kurio reikšmė grąžina realų filehandle'ą. (Ši funkcija realiai nuskaito simbolį ir tada įvykdo ungetc, tad nėra labai naudingas interaktyviame kontekste.) Nereikėtų nuskaitinėti iš terminalo failo (ar iškviesti eof(FILEHANDLE) jam) po to, kai failo pabaiga jau pasiekta. Failai, kaip kad terminalai, gali netekti failo pabaigos sąlygos, atliekant tokius veiksmus.

    eof be argumentų naudoja paskutinį nuskaitytą failą. Naudojant eof() su tuščiais skliaustais - visai kas kita. Jam priskiriamas pseudo failas, suformuotas iš failų, esančių komandinėje eilutėje ir pasiekiamų per <> operatorių. Kadangi <> nėra aiškus kaip normalus filehandle'as eof() prieš <> panaudojimą reikš, kad @ARGV bus pratikrintas ar galimas įvedimas. Panašiai eof() po to, kai <> grąžino failo pabaigą, reikš, kad apdorojamas kitas @ARGV sąrašas ir jei @ARGV dar nėra apibrėžtas, bus nuskaitomas įvedimas iš STDIN ; žr. "I/O Operators" perlop.

    while (<>) cikle, eof arba eof(ARGV) gali būti naudojami failų pabaigos aptikimui, eof() tiesiog aptiks paskutiniojo failo pabaigą. Pavyzdžiai

        # Iš naujo užfiksuoti eilučių numeravimą kiekvienam įvedimo failui
        while (<>) {
    	next if /^\s*#/;	# praleidžiami komentarai
    	print "$.\t$_";
        } continue {
    	close ARGV  if eof;	# Ne eof()!
        }
        # Įterpia brūkšnelius prieš paskutines failo eilutes
        while (<>) {
    	if (eof()) {		# patikrinti ar failo pabaiga
    	    print "--------------\n";
    	}
    	print;
    	last if eof();          # reikalinga, jei nuskaitoma iš terminalo
        }

    Praktinis patarimas: beveik niekada nereikia eof naudoti Perle, nes jo įvedimo operatoriai paprastai grąžina undef , kai baigiasi duomenys ar aptinkama klaida.

algirdas@perl.lt 2005.04.11 - $dabar