=head1 NAME

Net::NIS::Table - Object Interface to Sun's Network Information Service

=head1 DESCRIPTION

The NIS interface comes in two parts.  The first part is the raw
implementation of the NIS API, described in L<Net::NIS>.  The second is
the object interface.  This document describes the object interface 
implementation.

The Table object represents an individual NIS map.  A NIS map is bound
to a Table object with the new method:

  $obj = Net::NIS::Table->new($map, [ $domain ]);

For example,

  $hostsmap = Net::NIS::Table->new("hosts.byname");

This will create a Table object bound to the C<hosts.byname> NIS map in
the default NIS domain.  All operations on the $hostsmap object will
relate to the C<hosts.byname> map.

You can also specify a non-default domain:

  $hostsmap = Net::NIS::Table->new("hosts.byname", "my.domain.com.au");

Once a Table object has been bound to a NIS map, the following
methods are available:

=over 5

=item $value = $obj->match($key)

Returns the value for a given key.  If you only wish to look up one or
two values, this function is more efficient, as it retrieves the items
one at a time.  If you wish to retrieve many items (where many is dependent
on the size of the map, and probably what sort of machine you are on),
it is better to use the L<list> interface, which uses just one RPC
call to retreive the entire map.

=item \%data = $obj->list()

Return a reference to an associative array which contains the entire
NIS map.  The keys in the %data array correspond to the keys in the NIS
map.  If any error occurs that prevents the retrieval of the map, then
the undefined value is returned.  In this case, your program can use
the status method to determine the cause of the error.

=item \%data = $obj->search($srchkey)

Return a reference to an associative array which contains all entries
that have keys that contain the $srchkey.  If any error occurs that
prevents the retrieval of the map, then the undefined value is
returned.  In this case, your program can use the status method to
determine the cause of the error.

=item $status = $obj->status()

Returns the status code for the last operation.  If the last operation
succeeded, then the status code is 0.  The status codes returned by
this method are described below in the ERROR CODES section.

=item $status = $obj->status_string()

Returns the character representation of the status code for the last operation.  If the last operation
succeeded, then the status code is something like "operation
succeeded".  The exact strings returned by this function are
implementation dependent, and should not be used for comparison
purposes.  Use the status call, as described above.

=back

=head1 ERROR CODES

The status method described above can return one of the following values:

  $Net::NIS::ERR_ACCESS		Access violation
  $Net::NIS::ERR_BADARGS	Args to function are bad
  $Net::NIS::ERR_BADDB		yp data base is bad
  $Net::NIS::ERR_BUSY		Database is busy
  $Net::NIS::ERR_DOMAIN		Can't bind to a server which serves this domain
  $Net::NIS::ERR_KEY		No such key in map
  $Net::NIS::ERR_MAP		No such map in server's domain
  $Net::NIS::ERR_NODOM		Local domain name not set
  $Net::NIS::ERR_PMAP		Can't communicate with portmapper
  $Net::NIS::ERR_NOMORE		No more records in map database
  $Net::NIS::ERR_RESRC		Local resource allocation failure
  $Net::NIS::ERR_RPC		RPC failure
  $Net::NIS::ERR_YPBIND		Can't communicate with ypbind
  $Net::NIS::ERR_YPERR		Internal yp server or client interface error
  $Net::NIS::ERR_YPSERV		Can't communicate with ypserv
  $Net::NIS::ERR_VERS		YP version mismatch

=head1 AUTHOR

Copyright (c) 1995 Rik Harris (B<rik.harris@fulcrum.com.au>). All
rights reserved.  This program is free software; you can redistribute
it and/or modify it under the same terms as Perl itself.

The Network Information Service (NIS) was formerly known as Sun Yellow
Pages (YP). The functionality of the two remains the same; only the   
name has changed.  The name Yellow Pages is a registered trademark in
the United Kingdom of British Telecommunications plc, and may not be  
used without permission.
