_  _   ,_
/^\/^\-/ @D
~(________/ PERL.LT
|L |L
L L
Straipsniai  Funkcijos 
Funkcijos/endgrent - gražina, naudojant group failą
  • endgrent

    Šios paprogramės atlieka tokias pačias funkcijas kaip ir jų kopijos sistemų bibliotekoje. Sąrašo kontekste, gražinamos reikšmės iš įvairių grąžinančių paprogramių yra:

        ($name,$passwd,$uid,$gid,$quota,$comment,$gcos,$dir,$shell,$expire) = getpw*
        ($name,$passwd,$gid,$members) = getgr*
        ($name,$aliases,$addrtype,$length,@addrs) = gethost*
        ($name,$aliases,$addrtype,$net) = getnet*
        ($name,$aliases,$proto) = getproto*
        ($name,$aliases,$port,$proto) = getserv*

    (Jei įvestis neegzistuoja - gaunamas tuščias sąrašas.)

    Tiksli $gcos lauko reikšmė kinta, bet dažniausia ji talpina tikrą vartotojo vardą (ne prisijungimo) bei kitą informaciją, priklausančią jam. Visgi neverta aklai pasitikėti $gcos, nes daugumoje sistemų vartotojai gali pasikeisti savo infomaciją, tad ji gali būti nepatikima (žr. perlsec). $passwd ir $shell, vartotojo užkoduotas slaptažodis bei prisijungimo šelas, yra nepatikimi dėl tos pačios priežasties.

    Skaliariniame kontekste, grąžinamas vardas, nebent funkcijoje buvo ieškoma pagal vardą, tuo atveju gaunami kitokie rezultatai. (Jei įvestis neegzistuoja, gaunamas neapibrėžtumas.) Pvz:

        $uid   = getpwnam($name);
        $name  = getpwuid($num);
        $name  = getpwent();
        $gid   = getgrnam($name);
        $name  = getgrgid($num);
        $name  = getgrent();
        #ir t.t.

    getpw*() laukai $quota, $comment, ir $expire specialūs atvejai, turint omeny, kad daugumoje sistemų jie nepalaikomi. Jei nepalaikomas $quota - jo reikšmė - tuščias skaliaras. Jei palaikomas, jis dažniausia užšifruoja disko normą. Jei $comment laukas nepalaikomas, analogiškas tuščias skaliaras. Jei palaikomas jis dažniausia užkoduoja administruojama komentarą apie vartotoją. Kai kuriose sistemose laukas $quota gali būti $change ar $age, laukai, susiję su slaptažodžio amžiumi. Kai kuriose sistemose laukas $comment gali būti $class. $expire laukas, jei egzistuoja, saugo account'o ar slaptažodžio galiojimo periodą. Dėl egzistavimo ir tikslios reikšmės sistemoje, reikėtų pasikonsultuoti su getpwnam(3) dokumentacija ir pwd.h failu. Taip pat, ką reiškia $quota ir $comment, ir ar yra $expire laukai galima sužinoti iš Perlo, pasinaudojant Config moduliu ir d_pwquota , d_pwage , d_pwchange , d_pwcomment bei d_pwexpire reikšmėmis. Slaptažodžių shadow failai yra palaikomi tik tuo atveju, jei gamintojas intuityviai įdiegė, kad iškviečiant C bibliotekų paprogrames gaunamos shadow versijos, turint rpiviletgijų, ar egzistuojant shadow(3) funkcijoms kaip System V (Solaris, Linux...) Tos sistemos, kuriose įdiegtas savarankiškas shadow slaptažodžių valdymas, dažniausiai nėra palaikomos.

    $members reikšmė grąžinama getgr*() yra tarpais atskirtas grupių narių prisijungimo vardų sąrašas.

    gethost*() funkcijoms, jei h_errno kintamasis palaikomas C, jsi bus grąžinamas per $?, jei nepavyksta funkcijos kvietimas. @addrs reikšmė, grąžinama sėkmingo kvietimo yra plikų adresų, grąžintų atitinkamos sitemos bibliotekos kvietimo, sąrašas. Interneto domenuose, kiekvienas adresas yra keturių baitų ilgio ir galima juos išpakuoti parašant:

        ($a,$b,$c,$d) = unpack('C4',$addr[0]);

    Socket biblioteka šitai truputėlį palengvina:

        use Socket;
        $iaddr = inet_aton("127.1"); # ar koks adresas bebūtų
        $name  = gethostbyaddr($iaddr, AF_INET);
        # arba kitu atveju
        $straddr = inet_ntoa($iaddr);

    Jei pavargsti beprisimininėdamas kuris grąžinamojo sąrašo elementas kurią reikšmę turi, interfeisai yra standartiniuose moduliuose: File::stat, Net::hostent, Net::netent, Net::protoent, Net::servent, Time::gmtime, Time::localtime ir User::grent. Tai perrašo normalius built-inus, pateikiant versijas, kurios grąžina objektus su atitinkamais vardais kiekvienam laukui. Pvz:

       use File::stat;
       use User::pwent;
       $is_his = (stat($filename)->uid == pwent($whoever)->uid);

    Net jei atrodo, kad tai tie patys metodiniai iškvietimai (uid), taip nėra, nes File::stat objektas skiriasi nuo User::pwent objekto.

algirdas@perl.lt 2005.04.11 - $dabar