以下の * の部分には、各システムファイルに対応して、
/etc/passwd → pw /etc/group → gr /etc/hosts → host /etc/networks → net /etc/protocols → proto /etc/services → serv
がそれぞれ入る。
getpwnam(NAME)
, getgrnam(NAME)
,
gethostbyname(NAME)
, getnetbyname(NAME)
,getprotobyname(NAME)
, getservbyname(NAME,PROTO)
getpwuid(UID)
, getgrgid(GID)
gethostbyaddr(ADDR,ADDRTYPE)
, getnetbyaddr(ADDR,ADDRTYPE)
, getprotobynumber(NUMBER)
, getservbyport(PORT,PROTO)
getpwent
, getgrent
, gethostent
, getnetent
,
getprotoent
, getservent
setpwent
, setgrent
, sethostent(STAYOPEN)
,
setnetent(STAYOPEN)
,setprotoent(STAYOPEN)
,setservent(STAYOPEN)
endpwent
, endgrent
, endhostent
, endnetent
,
endprotoent
, endservent
これらのルーチンはシステムライブラリ内の同様の関数と同じ動作をする。
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
は
グループのメンバーのログイン名のリストをスペースで区切ったものである。
gethost
... が返す値 @addrs
は
対応するシステムライブラリをコールして得られる raw address のリストである。
Internet の domain では、各アドレスは長さ 4 バイトで、
次のようにして unpack
できる。
($a,$b,$c,$d) = unpack('C4',$addr[0]);