use Net::PH; $ph = Net::PH->new("some.host.name", Port => 105, Timeout => 120, Debug => 0);
if($ph) { $q = $ph->query({ field1 => "value1" }, [qw(name address pobox)]); if($q) { } } # Alternative syntax if($ph) { $q = $ph->query('field1=value1', 'name address pobox'); if($q) { } }
Net::PH
is a class implementing a simple Nameserver/PH client in Perl as described in the
CCSO Nameserver -- Server-Client Protocol. Like other modules in the Net:: family the
Net::PH
object inherits methods from
Net::Cmd
.
$ph = Net::PH->new("some.host.name", Port => 105, Timeout => 120, Debug => 0 );
This is the constructor for a new Net::PH object. HOST
is the name of the remote host to which a
PH connection is required.
If HOST
is not given, then the SNPP_Host
specified in Net::Config
will be used.
OPTIONS
is an optional list of named options which are passed in a hash like
fashion, using key and value pairs. Possible options are:-
Port - Port number to connect to on remote host.
Timeout - Maximum time, in seconds, to wait for a response from the Nameserver, a value of zero will cause all IO operations to block. (default: 120)
Debug - Enable the printing of debugging information to STDERR
$q = $ph->query({ name => $myname }, [qw(name email schedule)]); foreach $handle (@{$q}) { foreach $field (keys %{$handle}) { $c = ${$handle}{$field}->code; $v = ${$handle}{$field}->value; $f = ${$handle}{$field}->field; $t = ${$handle}{$field}->text; print "field:[$field] [$c][$v][$f][$t]\n" ; } }
Search the database and return fields from all matching entries.
The SEARCH
argument is a reference to a
HASH which contains field/value pairs which will be
passed to the Nameserver as the search criteria.
RETURN
is optional, but if given it should be a reference to a list which contains
field names to be returned.
The alternative syntax is to pass strings instead of references, for example
$q = $ph->query('name=myname', 'name email schedule');
The SEARCH
argument is a string that is passed to the Nameserver as the search
criteria.
RETURN
is optional, but if given it should be a string which will contain field
names to be returned.
Each match from the server will be returned as a
HASH where the keys are the field names and the values
are Net::PH:Result
objects (code, value,
field, text).
Returns a reference to an ARRAY which contains references to HASHs, one per match from the server.
$r = $ph->change({ email => "*.domain.name" }, { schedule => "busy");
Change field values for matching entries.
The SEARCH
argument is a reference to a
HASH which contains field/value pairs which will be
passed to the Nameserver as the search criteria.
The MAKE
argument is a reference to a
HASH which contains field/value pairs which will be
passed to the Nameserver that will set new values to designated fields.
The alternative syntax is to pass strings instead of references, for example
$r = $ph->change('email="*.domain.name"', 'schedule="busy"');
The SEARCH
argument is a string to be passed to the Nameserver as the search criteria.
The MAKE
argument is a string to be passed to the Nameserver that will set new
values to designated fields.
Upon success all entries that match the search criteria will have the field values, given in the Make argument, changed.
$r = $ph->login('username','password',1);
Enter login mode using USER
and PASS
. If ENCRYPT
is given and is true then the password will be used to encrypt a challenge text string provided
by the server, and the encrypted string will be sent back to the server. If ENCRYPT
is not given, or false the the password will be sent in clear text (this is not recommended)
$r = $ph->logout();
Exit login mode and return to anonymous mode.
$fields = $ph->fields(); foreach $field (keys %{$fields}) { $c = ${$fields}{$field}->code; $v = ${$fields}{$field}->value; $f = ${$fields}{$field}->field; $t = ${$fields}{$field}->text; print "field:[$field] [$c][$v][$f][$t]\n"; }
Returns a reference to a
HASH. The keys of the
HASH are the field names and the values are
Net::PH:Result
objects (code, value, field,
text).
FIELD_LIST
is a string that lists the fields for which info will be returned.
$r = $ph->add( { name => $name, phone => $phone });
This method is used to add new entries to the Nameserver database. You must successfully call login before this method can be used.
Note that this method adds new entries to the database. To modify an existing entry use change.
FIELD_VALUES
is a reference to a
HASH which contains field/value pairs which will be
passed to the Nameserver and will be used to initialize the new entry.
The alternative syntax is to pass a string instead of a reference, for example
$r = $ph->add('name=myname phone=myphone');
FIELD_VALUES
is a string that consists of field/value pairs which the new entry will
contain.
$r = $ph->delete('name=myname phone=myphone');
This method is used to delete existing entries from the Nameserver database. You must successfully call login before this method can be used.
Note that this method deletes entries to the database. To modify an existing entry use change.
FIELD_VALUES
is a string that serves as the search criteria for the records to be
deleted. Any entry in the database which matches this search criteria will
be deleted.
$r = $ph->id('709');
Sends ID
to the Nameserver, which will enter this into its logs. If ID
is not given then the
UID of the user running the process will be sent.
$siteinfo = $ph->siteinfo(); foreach $field (keys %{$siteinfo}) { $c = ${$siteinfo}{$field}->code; $v = ${$siteinfo}{$field}->value; $f = ${$siteinfo}{$field}->field; $t = ${$siteinfo}{$field}->text; print "field:[$field] [$c][$v][$f][$t]\n"; }
Returns a reference to a
HASH containing information about the server's site. The keys of the
HASH are the field names and values are
Net::PH:Result
objects (code, value, field, text).
$r = $ph->quit();
Quit the connection
foreach $handle (@{$q}) { foreach $field (keys %{$handle}) { $my_code = ${$q}{$field}->code; $my_value = ${$q}{$field}->value; $my_field = ${$q}{$field}->field; $my_text = ${$q}{$field}->text; } }
How do I get a count of the returned matches to my query?
$my_count = scalar(@{$query_result});
How do
I get the status code and message of the last $ph
command?
$status_code = $ph->code; $status_message = $ph->message;
Otis Gospodnetic
Example: query first_name last_name email="*.domain"
All other code is Copyright (c) 1996-1997 Graham Barr