5部 関数リファレンス

get...

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

これらのルーティンは、システムライブラリの同名の関数を実行します。

さまざまな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* 関数では、Ch_errno変数がサポートされていれば、関数呼出が失敗したときに、$?を通して、その値が返されます。 成功時に返される@addrs値は、対応するシステムコールが返す、生のアドレスのリストです。

インターネットドメインでは、個々のアドレスは、4 バイト長で、下記のようにして、unpackすることができます。

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

関連記事