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.