System information

getpwnam(NAME)
getgrnam(NAME)
gethostbyname(NAME)
getnetbyname(NAME)
getprotobyname(NAME)
getpwuid(UID)
getgrgid(GID)
getservbyname(NAME,PROTO)
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
These routines perform the same functions as their counterparts in the system library. Within an array context, the return values from the various get routines are as follows:
	($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...
(If the entry doesn't exist you get a null list.)

Within a scalar context, you get the name, unless the function was a lookup by name, in which case you get the other thing, whatever it is. (If the entry doesn't exist you get the undefined value.) For example:

	$uid = getpwnam
	$name = getpwuid
	$name = getpwent
	$gid = getgrnam
	$name = getgrgid
	$name = getgrent
	etc.
The $members value returned by getgr... is a space separated list of the login names of the members of the group.

For the gethost... functions, if the h_errno variable is supported in C, it will be returned to you via $? if the function call fails. The @addrs value returned by a successful call is a list of the raw addresses returned by the corresponding system library call. In the Internet domain, each address is four bytes long and you can unpack it by saying something like:

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