---
name: "Net::DRI::Data::Hosts"
section: "3pm"
platform: "linux"
package: "libnet-dri-perl"
version: "0.96-1"
release: "Debian 7 (Wheezy)"
platforms: ["linux"]
url: "https://new.carta.tech/Net::DRI::Data::Hosts"
---

# Net::DRI::Data::Hosts(3pm)

Handle ordered list of nameservers (name, IPv4 addresses, IPv6 addresses) for Net::DRI

## NAME

Net::DRI::Data::Hosts - Handle ordered list of nameservers (name, IPv4 addresses, IPv6 addresses) for Net::DRI

## SYNOPSIS

```
 use Net::DRI::Data::Hosts;
 my $dh=Net::DRI::Data::Hosts->new();
 $dh->add('ns.example.foo',['1.2.3.4','1.2.3.5']);
 $dh->add('ns2.example.foo',['10.1.1.1']); ## Third element can be an array ref of IPv6 addresses
 ## ->add() returns the object itself, and thus can be chained
 ## Number of nameservers
 print $dh->count(); ## Gives 2
 ## List of names, either all without arguments, or the amount given by the argument
 my @a=$dh->get_names(2); ## Gives ('ns.example.foo','ns2.example.foo')
 ## Details for the nth nameserver (the list starts at 1 !)
 my @d=$dh->get_details(2); ## Gives ('ns2.example.foo',['10.1.1.1'])
 ## Details by name is possible also
 my @d=$dh->get_details('ns2.example.foo');
```

## DESCRIPTION

Order of nameservers is preserved. Order of IP addresses is preserved, but no duplicate IP is allowed.

If you try to add a nameserver that is already in the list, the IP addresses provided will be added to the existing IP addresses (without duplicates)

Hostnames are verified before being used with *Net::DRI::Util::is\_hostname()*.

IP addresses are verified with *Net::DRI::Util::is\_ipv4()* and *Net::DRI::Util::is\_ipv6()*.

## METHODS

### new(...)

creates a new instance ; if parameters are given, *add()* is called with them all at once

### new\_set(...)

creates a new instance ; if parameters are given, *add()* is called once for each parameter

### *clear()*

clears the current list of nameservers

### set(...)

clears the current list of nameservers, and call *add()* once for each parameter passed

### add(name,\[ipv4\],\[ipv6\])

adds a new nameserver with the given name and lists of IPv4 and IPv6 addresses

### *name()*

name of this object (for example for registries having the notion of host groups) ; this has nothing to do with the name(s) of the nameservers inside this object

### *loid()*

local id of this object

### get\_names(limit)

returns a list of nameservers' names included in this object ; if limit is provided we return only the number of names asked

### *count()*

returns the number of nameservers currently stored in this object

### *is\_empty()*

returns 0 if this object has nameservers, 1 otherwise

### get\_details(pos\_or\_name)

given an integer (position in the list, we start to count at 1) or a name, we return all details as a 3 element array in list context or only the first element (the name) in scalar context for the nameserver stored at the given position or with the given name ; returns undef if nothing found at the position/with the name given.

## SUPPORT

For now, support questions should be sent to:

\<netdri@dotandco.com\>

Please also see the SUPPORT file in the distribution.

## SEE ALSO

http://www.dotandco.com/services/software/Net-DRI/

## AUTHOR

Patrick Mevzek, \<netdri@dotandco.com\>

## COPYRIGHT

Copyright (c) 2005,2006,2007,2008,2009 Patrick Mevzek \<netdri@dotandco.com\>. All rights reserved.

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

See the LICENSE file that comes with this distribution for more details.
