_  _   ,_
/^\/^\-/ @D
~(________/ PERL.LT
|L |L
L L
Straipsniai  Funkcijos 
Funkcijos/sysread - fiksuoto ilgio nebuferintas įvedimas iš filehandle'o

  • sysread FILEHANDLE,SCALAR,LENGTH,OFFSET
  • sysread FILEHANDLE,SCALAR,LENGTH

    Mėgina nuskaityti LENGTH baitų duomenų į kintamąjį SCALAR iš nurodyto FILEHANDLE, naudodamas sisteminį kreipinį read(2). Praleidžia užbufreintą IO, taigi sumaišydamas jį su kitomis nuskaitymo rūšimis, print, write, seek, tell, ar eof gali įvesti painiavą, nes perlio ar stdio layers'ai įprastai buferina duomenis. Gražina nuskaitytų baitų skaičių, 0 failo pabaigoje ar undef, jei buvo klaida (pastaruoju atveju $! taip pat nustatytas). SCALAR bus padidintas ar sumažintas atitinkamai, kad paskutinis nuskaitytas baitas būtų paskutinis skaliaro baitas po nuskaitymo.

    OFFSET gali būti aprašytas, duomenų padėjimui į kokią nors vietą sekoje (string), o ne jos pradžioje. Neigiamas OFFSET aprašo talpinimą per nurodytą kiekį simbolių, skaičiuojant atbula tvarka nuo string'o pabaigos. Jei teigiamas OFFSET, didesnis nei SCALAR ilgis, tuomet eilutė (string) padidima iki reikiamo dydžio, su "\0" baitais prieš pridedant nuskaitymo rezultatą.

    Nėra jokios syseof() funkcijos, kas yra gerai, mat eof() vis vien neveikia labai gerai failuose tokiuose kaip ttys ir pan. Sysread() naudojamas tikrinant gražinamą reikšmę, kol ji tampa 0, kas apsprendžia, jog kreipimąsis baigtas.

    Pažymėtina, jog, jei filehandle'as buvo pažymėtas kaip :utf8 Unicode simboliai yra nuskaitomi vietoje baitų (LENGTH, OFFSET, ir sysread() gražinamos reikšmės yra Unicode simboliai). :encoding(...) layer'is netiesiogiai aprašo :utf8 layer'į. Skaitymui binmode, open, ir open pragma, open.

algirdas@perl.lt 2005.04.11 - $dabar