endgrent
endhostent
endnetent
endprotoent
endpwent
endservent
getgrent
getgrgid GID
getgrnam NAME
gethostbyaddr ADDR,ADDRTYPE
gethostbyname NAME
gethostent
getnetbyaddr ADDR,ADDRTYPE
getnetbyname NAME
getnetent
getprotobyname NAME
getprotobynumber NUMBER
getprotoent
getpwent
getpwnam NAME
getpwuid UID
getservbyname NAME,PROTO
getservbyport PORT,PROTO
getservent
setgrent
sethostent STAYOPEN
setnetent STAYOPEN
setprotoent STAYOPEN
setpwent
setservent STAYOPEN
endhostent
endnetent
endprotoent
endpwent
endservent
getgrent
getgrgid GID
getgrnam NAME
gethostbyaddr ADDR,ADDRTYPE
gethostbyname NAME
gethostent
getnetbyaddr ADDR,ADDRTYPE
getnetbyname NAME
getnetent
getprotobyname NAME
getprotobynumber NUMBER
getprotoent
getpwent
getpwnam NAME
getpwuid UID
getservbyname NAME,PROTO
getservbyport PORT,PROTO
getservent
setgrent
sethostent STAYOPEN
setnetent STAYOPEN
setprotoent STAYOPEN
setpwent
setservent STAYOPEN
これらのルーティンは、システムライブラリの同名の関数を実行します。
さまざまなget ルーティンからの返却値
($name,$passwd,$uid,$gid,$quota,$comment,$gcos,$dir,$shell) = 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*
getgr*
関数によって返される値$members
は、グループのメンバのログイン名をスペースで区切ったものです。
エントリが存在しなければ、空リストが返されます。
スカラコンテキストでは、*nam
、*byname
といったNAME
で検索するもの以外は、name
を返し、NAME
で検索するものは、何か別のものを返します。(エントリが存在しなければ、未定義値が返ります。)
$uid = getpwnam $name = getpwuid $name = getpwent $gid = getgrnam $name = getgrgid $name = getgrent etc.
gethostの使い方
gethost*
関数では、C
でh_errno
変数がサポートされていれば、関数呼出が失敗したときに、$?
を通して、その値が返されます。 成功時に返される@addrs
値は、対応するシステムコールが返す、生のアドレスのリストです。
インターネットドメインでは、個々のアドレスは、4 バイト長で、下記のようにして、unpack
することができます。
($a,$b,$c,$d) = unpack('C4',$addr[0]);