Failai ir įvedimas/ išvedimas

Failų tikrinimo operatoriai

sintaksė
-raidė failo kintamasis - rezultatas priklauso nuo failo, aprašyto failo kintamuoju, parametrų
-raidė išraiška - rezultatas priklauso nuo failo, kurio vardas yra išraiškos reikšmė, parametrų
-raidė - rezultatas priklauso standartinio įvedimo failo parametrų
galimi operatoriai
  • -r Programa turi teises skaityti šį failą.
  • -w Programa turi teises rašyti į šį failą.
  • -x Programa turi teises vykdyti šį failą.
  • -o Failo savininkas sutampa su galiojančiu UID
  • -R Vartotojas turi teises skaityti šį failą.
  • -W Vartotojas turi teises rašyti į šį failą.
  • -X Vartotojas turi teises vykdyti šį failą.
  • -O Vartotojas yra failo savininkas.
  • -e Failas egzistuoja.
  • -z Failas yra nulinio ilgio.
  • -s Failas yra nenulinio ilgio (grazina failo ilgį).
  • -f Failas yra duomenų failas.
  • -d Failas yra katalogas.
  • -l Failas yra simbolinis ryšys.
  • -p Failas yra įvartinta pypkė (FIFO).
  • -S Failas yra soketas.
  • -b Failas yra specialusis blokinis įrenginys.
  • -c Failas yra specialusis simbolinis įrenginys.
  • -t Failo kintamasis yra susietas su (pseudo)terminalu.
  • -u Failas turi nustatytą SetUID bitą.
  • -g Failas turi nustatytą SetGID bitą.
  • -k Failas turi nustatytą sticky bitą.
  • -T Failas yra tekstinis.
  • -B Failas yra dvejetainis.
  • -M Failo amažius, nuo skripto paleidimo momento (paromis).
  • -A Laikas (paromis) tarp paskutinio kreipimosi į failo duomenis ir skripto paleidimo momento.
  • -C Laikas (paromis) tarp paskutinio kreipimosi į failo aprašymą (inode) ir skripto paleidimo momento.
    pavyzdys
    if (! -f ".conf") {die "Konfiguracija turi būti saugoma paprastame faile";};
    die "Negaliu perskaityti konfiguracijos" if ! -r ".conf";
    if (-M "f1" > -M "f2") { #failas f1 yra senesnis uz faila f2 - darome kažką
    }
    

    pilnos informacijos apie faila gavimas

    sintaksė
    @mas=stat failo kintamasis
    @mas=stat išraiška
    @mas=stat
    @mas=lstat failo kintamasis
    @mas=lstat išraiška
    @mas=lstat
    masyvo nariai:
    įrenginio numeris failų sistemoje
    inode numeris
    failo tipas ir teisės
    ryšių kiekis
    savininko UID
    grupes ID
    įrenginio tipa aprašantis numeris;turi prasmę tik įrenginiam
    failo dydis, baitais
    paskutinio kreipimosi į failą laikas
    paskutinio failo keitimo laikas
    paskutinio inode keitimo laikas
    siulomas bloko dydis kreipiantis į failų sistemą
    išskirtų blokų skaičius
    semantika
    stat atiduoda informaciją apie failą su duomenimis, arba failą, į kurį rodo simbolinis ryšys
    lstat atiduoda informaciją apie patį simbolinį ryšį

    operacijos su failais perl'o priemonėmis

    pagrindinės funcijos:
    • open failo_kintamasis, [išraiška] - sukūria failo_kinamąjį, atidaro failą. Jei išraiška nėra pateikiama, aprašymas kokį failą reikia atidaryti imamas iš kintamojo tokiu pačiu vardu, kaip ir failo kintamasis. Kaip atidaryti failą nusako išraiškos pradžioje ir pabaigoje esantys specialieji simboliai.
      spec. simolis prasmė
      <, nieko failas atidaromas skaitymui
      > failas atidaromas rašymui. Turinys sunaikinamas
      >> failas atidaromas papildymui. Rašymas pradedamas nuo baito, esančio už failo pabaigos
      +<,+>,+>> atidaro failą ir skaitymui ir rašymui
      | (pradžioje) paleidžia programą, kurios vardas yra išraiškoje ir visą išvedimą i šį failo kintamąjį nukreipia į paleistos programos standartinį įvedimą.
      | (pabaigoje) paleidžia programą, kurios vardas yra išraiškoje ir visą šios programos standartinį išvedimą padaro prieinamą skaitant šį failo kintamąjį.
      & po <, >, >>, +>, +>>, +< nurodo, kad turi būti atidarytas dubliuojantis failo kintamasis. Originalu turi būti paimtas failo kintamasis, kurio vardas seka po & simbolio, jei ten yra tekstas, arba failo deskriptorius, jei seka skaičius. Failo atidarymo tipas originale ir kopijoje turi sutapti.
      - STDIN
      >- STDOUT
    • close failo_kintamasis uždaro failą, aprašytą failo kintamuoju.
    • <failo_kintamasis> skaito iš failo. Skaliariniame kontekste - vieną eilutę; masyvo kontekste - į masyvą surašo visas likusias eilutes; jei tai yra VIENINTELIS termas ciklo salygoje - šią reikšmę priskiria spec.kintamąjam $_.
    • <> specialus anksčiau aprašytas atvejis. Skaito iš standartinio įvedimo ir iš visų failų, nurodytų komandinėje eilutėje (tiksliau tų, kurie liko standartiniame masyve @ARGV prieš pirmąjį kreipinį į <>).
    Svarbiausieji specialieji kintamieji
    • @ARGV - visų argumentų, su kuriais buvo iškviestas skriptas, sąrašas;
    • $ARGV - einamojo failo vardas (kai skaitoma per <>
    • $/ - eilučių skyrimo seka - gali būti kelių simbolių ilgio
    • $\ - išvedamų įrašų skyriklis - šis tekstas yra spausdinamas po kiekvienos print operacijos
    • $? - komandos grąžinimo kodas
    • $. - einamasis eilutės numeris (nunulinamas, vykdant close(), tačiau eina nenulinamas, kai naudojamas <>; galima pakeisti po kiekvienos eilutes žiūrint, ar jau pasibaigė failas)
    Komandinės eilutės raktai
    • -e kodas - vykdyti kodą
    • -c - tik sukompiliuoti kodą (patikrinti, ar nėra sintaksės klaidų), tačiau jo nevykdyti
    • -n - vykdyti skriptą su kiekviena įėjimo failo(-ų) eilute.
    • -p - vykdyti skriptą su kiekviena įėjimo failo(-ų) eilute, paskutinę spec. kintamojo $_ reikšmę spausdinti.
    • -Oaštuntainis_skaičius - nusako kodą-eilučių skyriklį; nustato spec.kintamąjį $/ į šią reikšmę; speciali reikšmė 00 nurodo, kad reikia skaityti "paragrafų režime", t.y. viena eilute laikyti visas eilutes iki tuščios; speciali reikšmė 0777 nurodo, kad reikia perskaityti visą įvedimą, nes simbolio su tokia reikšme paprasčiausiai nėra.
    • -l[aštuntainis_skaičius] - įjungia automatinį eilučių pabaigų tvarkymą: su šiuo raktu eilutės pabaigos simbolis nebėra priskiriamas kintamajam, kuriam priskiriama įvesta eilutė; spec.kintamąjam $\ priskiriama nurodyta arba spec.kintamojo $/ reikšmė
    • -a - (autosplit) - suskaldyti įėjimo eilutę - rezultatas būna masyve @F
    • -Fšablonas - nurodo, kaip skaidyti eilutę; naudojamas su -a
    • -i[išplėtimas] - nurodo, kad rezultatus reikia patalpinti į tą patį failą, iš kur buvo paimti duomenys. Jei nurodytas išplėtimas, seni duomenys bus palikti faile su tokiu išplėtimu.
    Kitos funkcijos
    • read failo_kintamasis, skaliaras, ilgis, [postūmis] - skaito iš nurodyto failinio kintamojo į skaliarą naudodamas C bibliotekos funkciją fread. postūmis nurodo, nuo kurios skaliaro vietos reikia įrašinėti. Neigiama reikšmė nurodo postūmį nuo skaliaro pabaigos. Skaliaras baigsis ties paskutiniu nuskaitytu baitu.
    • print [[failo_kintamasis] sąrašas] - spausdina sąrašo informaciją į failą. Jei failas nenurodytas - į failą, išrinktą paskutine select komanda. Jei tokios nebuvo - į standartinį išvedimą. Jei ir sąrašas yra nepateiktas - spausdinama spec.kintamojo $_ reikšmė. Po failo kintamojo kablelis NEDEDAMAS - šitaip yra pasakoma, kad pirmas argumentas yra failo kintamasis!
    • printf [failo_kintamasis] formatas, sąrašas - spausdina formatuotą sąrašo informaciją į failą. Jei failas nenurodytas - į failą, išrinktą paskutine select komanda. Jei tokios nebuvo - į standartinį išvedimą. Formatavimas vykdomas taip pat, kaip ir C kalboje. Po failo kintamojo kablelis NEDEDAMAS - šitaip yra pasakoma, kad pirmas argumentas yra failo kintamasis!
    • select [failo_kintamasis] - gražina einamąjį failo kintamąjį, jei pateiktas nustato failinį kintamąjį, į kurį bus išvedinejama tolesnėmis funkcijomis, nenurodančiomis failo.
    • select - iškviečia select sisteminį kreipinį - naudojama kelių įvedimo srautų suderinimui - plačiau bus kalbama skyrelyje apie darbą su tinklu.
    • unlink [sarašas] - ištrina failus, nurodytus saraše, jei jo nėra - trina tai, kas yra spec.kintamajame $_. Ši funkcija netrina katalogų (išskyrus, jei paleista su root'o teisėmis ir yra komandines eilutės raktas -U; katalogų trynimui naudoti funkciją rmdir).
    • truncate failo_kinamasis|išraiška ,ilgis - sutrumpina failą iki ilgio
    • tell [failo_kintamasis] - nurodo failo poziciją faile, apibrežtame failo_kintamuoju, arba paskutiniame skaitytame faile, jei kviečiama be argumentų.
    • seek [failo_kintamasis, pozicija, atskaita] - nustato einamąją poziciją faile. Kviečia sisteminį kreipinį seek su atitinkamais parametrais.
    • symlink senas_failas, naujas_failas sukuria simbolinį ryšį tarp seno_failo ir naujo_failo
    • readlink [israiska] - gražina, kur rodo simbolinis ryšys. '', jei tai yra ne simbolinis ryšys.
    • rename senas_vardas, naujas_vardas - pakeicia failo vardą. Kaip ir unix'inė komanda mv nedirba, jei failas turi būti perkeltas iš vienos failų sistemos i kitą.
    • umask [išraiška] - nustato teisių maskę į išraiška arba grąžina šiuo metu esančią, jei išraiška nėra nurodyta

    operacijos su katalogais perl'o priemonėmis

    pagrindinės funcijos:
    • opendir katalogo_kintamasis, išraiška - sukuria katalogo_kinamąjį atitinkantį katalogą, kurio vardas duodamas išraiškoje.
    • readdir katalogo_kintamasis - perskaito einamąjį katalogo elementą. Grąžina jį skaliariniame kontekste, visų likusių failų vardų masyvą masyvo kontekste.
    • telldir katalogo_kintamasis - nusako einamąjį readdir funkcijos įrašą katalogo_kintamajame.
    • seekdir katalogo_kintamasis - keičia einamąjį readdir funkcijos įrašą katalogo_kintamajame.
    • rewinddir katalogo_kintamasis - keičia einamąjį readdir funkcijos įrašą į katalogo_kintamojo pradžią.
    • rmdir [katalogas] - trina katalogą, nurodytą parametruose arba kintamajame $_

    operacijos su failais sisteminėmis priemonėmis

    pagrindinės funcijos:
    • fileno failo_kintamasis - grąžina OS failo deskriptorių, kuris atitinka perlinį failo_kintamąjį.
    • eof [failo_kintamasis] - nustato, ar jau pasiekta failo pabaiga. Nustatymui bando skaityti vieną baitą o paskui grąžinti jį atgal - taigi nenaudotina skaitant iš terminalų.
    • sysopen failo_kintamasis, failo_vardas, režimas, [teisės] - atidaro failą kviesdamas sisteminį kreipinį open su duotais argumentais
    • sysread failo_kintamasis, skaliaras, ilgis, [postūmis] *- skaito iš nurodyto failo kintamojo į skaliarą naudodamas sisteminį kreipinį read. postūmis nurodo, nuo kurios skaliaro vietos reikia įrašinėti. Neigiama reikšmė nurodo postūmį nuo skaliaro pabaigos. Skaliaras baigsis ties paskutiniu nuskaitytu baitu.
    • syswrite failo_kintamasis, skaliaras, ilgis, [postūmis] *- rašo skaliaro reikšmę į nurodyta failinį kintamąjį naudodamas sisteminį kreipinį write. postūmis nurodo, nuo kurios skaliaro vietos reikia įrašinėti. Neigiama reikšmė nurodo postūmį nuo skaliaro pabaigos.
    • sysseek failo_kintamasis, pozicija, atskaita - vykdo sisteminį kreipinį seek su atitinkamai parametrais
    (*) pažymėtų funkcijų nerekomenduojama maišyti su skaitymo/ rašymo funkcijomis be sys priešdėlio.

    formatai

    Formatai yra naudojami ataskaitų generavimui. Jie remiasi principu, kad yra apibrėžiama, kaip atrodo ataskaitos ``kepurė'' ir ``įrašas''. O paskiau generuojami duomenys ir write() kreipiniu dedami į ataskaitą. Perl'as rūpinasi, kad vietoje būtų įterpiamos "kepurės" ir teisingai išdėliojama įrašo informacija. ``Įrašai'' ir ``kepurės'' aprašomi format'ų terminais.
    formato apibrėžimas:
    format [pavadinimas] =
    formato_tekstas
    .
    formato_tekstas
    susideda iš eilučių, aprašančių, kaip atrodys formatas, bei kur bus įterpiamos reikšmės
    eilučių, kuriose duodamas sąrašas reikšmių, kurias reikia įterpti.
    po kiekvienos vaizdą aprašančios eilutės, turinčios įterpti reikšmę, turi būti reikšmes aprašanti eilutė.
    vaizdo eilučių elementai
    @ nurodo paprastos reikšmės vietą
    ^ nurodo per kelias eilutes eisiančios reikšmės vietą; išvedant atitinkamo kintamojo reikšmė, kiek telpa, bus spausdinta šioje vietoje, ir dalis, kuri buvo išvesta, bus pašalinta iš kintamojo; spec. kintamasis $: nurodo, ties kokiais simboliais eilute gali būti dalinama
    < nurodo, kiek uzims reikšmė, jos tekstas sulyginamas pagal kairįjį kraštą
    | nurodo, kiek uzims reikšmė, jos tekstas centruojamas
    > nurodo, kiek uzims reikšmė, jos tekstas sulyginamas pagal dešinįjį kraštą
    @##.## nurodo kiek vietos yra skiriama skaičiui, bei kurioje vietoje turi būti dedamas dešimtainis taškas
    ~ išvedant pakeičiama į tarpą; nurodo, kad stogeliu aprašytų eilučių nereikia išvedinėti, jei gauta eilutė yra tuščia
    ~~ išvedant pakeičiama į tarpą; nurodo, kad eilutę reikia išvedinėti tol, kol visos įstatomis reikšmės taps tuščios (reikia atkreipti dėmesį, kad @-laukai NĖRA keičiami, taigi, kada nors jie turi duoti tuščia reikšmę, kad formatas galėtų pasibaigti!)
    pavyzdys
    format STDOUT =
    Subject: @<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
             $subject
    Index: @<<<<<<<<<<<<<<<<<<<<<<<<<<<< ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<
           $index,                       $description
    Priority: @<<<<<<<<<< Date: @<<<<<<< ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              $priority,        $date,   $description
    From: @<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<
          $from,                         $description
    Assigned to: @<<<<<<<<<<<<<<<<<<<<<< ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<
                 $programmer,            $description
    ~                                    ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<
                                         $description
    ~~                                    ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<
                                          $description
    .
    
    kepurės formatas nustatomas
    priskiriant formato pavadinimą spec.kintamajam $^
    įrašo formatas nustatomas
    priskiriant formato pavadinimą spec.kintamajam $~
    puslapio ilgis nustatomas
    priskiriant formato pavadinimą spec.kintamajam $=
    puslapio prasukimo simbolis nustatomas
    priskiriant formato pavadinimą spec.kintamajam $^L. Paprastai \f
    dabartinis puslapio numeris
    yra spec.kintamajame $%
    likęs eilučių kiekis puslapyje
    yra spec.kintamajame $-
    priskirinat formatas pakeičiamas
    paskutiniam išrinktam su select() failui
    nepriskyrus, įrašo formatas turi varda, sutampanti su failo kintamuoju, "kepurės" formato vardas dar turi pridėta "_TOP";
    rašymas į failą
    vykdomas funkcija write.
    formavimas be išvedimo
    gali būti vykdomas naudojant funkciją formline paveiklas, sarašas. Ši funkcija pagal paveikslą suformuos išvedimą ir jį įrašys į spec.kintamąjį $^A. Funkcija write naudoja pastarojo kintamojo reikšmę išvedimui.