_  _   ,_
/^\/^\-/ @D
~(________/ PERL.LT
|L |L
L L
Straipsniai  Funkcijos 
Funkcijos/sysseek - nustatyti I/O pointerį handle, naudojamam sysread ir syswrite

  • sysseek FILEHANDLE,POSITION,WHENCE

    Nustato FILEHANDLE sisteminę poziciją baitais, naudojant sisteminį kreipinį lseek(2). FILEHANDLE gali būti išsireiškimas, kurio reikšmė duoda filehandle'o pavadinimą. WHENCE reikšmės yra 0 nustatant naują poziciją į POSITION, 1 nustatant poziciją į dabartinė plius POSITION ir 2 nustatant jį į EOF plius POSITION (dažniausiai neigiama).

    Pažymėtina, jog tai yra baitais: net jei filehandle'as buvo nustatyta dirbi su simboliais (pvz. naudojant :utf8 I/O layer), tell() gražins baitų, ne simbolių postūmį (nes įgyvendinant pastarąjį variantą, sysseek() veikimas taptų labai lėtas).

    sysseek() apiena normalų užbuferintą IO, taigi sumaišydamas jį su kitais nuskaitymais, kitais nei sysread, pvz. >&lt ar read()) print, write, seek, tell, ar eof gali įvesti painiavą.

    Aprašant WHENCE galima naudoti konstantas SEEK_SET , SEEK_CUR ir SEEK_END (failo pradžia, dabartinė pozicija, failo pabaiga) iš Fcntl modulio. Konstantų panaudojimas taip pat labiau pasiduoda pernešimui (portable) nei pasitikėjimas 0, 1 ir č. Pvz. "systell funkcijos aprašymui:

    	use Fcntl 'SEEK_CUR';
    	sub systell { sysseek($_[0], 0, SEEK_CUR) }

    Gražina naują poziciją arna nesėkmės atveju neapibrėžtą reikšmę. Nulinė pozicija gražinama kaip string'as "0 but true" ; tad sysseek gražina true sėkmės atveju ir false - nesėkmės, bet vis dar įmanoma lengvai nustatyti naują poziciją.

algirdas@perl.lt 2005.04.11 - $dabar