1NAME 2 Net::Nslookup - Provide nslookup(1)-like capabilities 3 4SYNOPSIS 5 use Net::Nslookup; 6 my @addrs = nslookup $host; 7 8 my @mx = nslookup(type => "MX", domain => "perl.org"); 9 10DESCRIPTION 11 "Net::Nslookup" provides the capabilities of the standard UNIX command 12 line tool nslookup(1). "Net::DNS" is a wonderful and full featured 13 module, but quite often, all you need is `nslookup $host`. This module 14 provides that functionality. 15 16 "Net::Nslookup" exports a single function, called "nslookup". "nslookup" 17 can be used to retrieve A, PTR, CNAME, MX, NS, SOA, TXT, and SRV 18 records. 19 20 my $a = nslookup(host => "use.perl.org", type => "A"); 21 22 my @mx = nslookup(domain => "perl.org", type => "MX"); 23 24 my @ns = nslookup(domain => "perl.org", type => "NS"); 25 26 my $name = nslookup(host => "206.33.105.41", type => "PTR"); 27 28 my @srv = nslookup(term => "_jabber._tcp.gmail.com", type => "SRV"); 29 30 "nslookup" takes a hash of options, one of which should be *term*, and 31 performs a DNS lookup on that term. The type of lookup is determined by 32 the *type* argument. If *server* is specified (it should be an IP 33 address, or a reference to an array of IP addresses), that server(s) 34 will be used for lookups. 35 36 If only a single argument is passed in, the type defaults to *A*, that 37 is, a normal A record lookup. 38 39 If "nslookup" is called in a list context, and there is more than one 40 address, an array is returned. If "nslookup" is called in a scalar 41 context, and there is more than one address, "nslookup" returns the 42 first address. If there is only one address returned, then, naturally, 43 it will be the only one returned, regardless of the calling context. 44 45 *domain* and *host* are synonyms for *term*, and can be used to make 46 client code more readable. For example, use *domain* when getting NS 47 records, and use *host* for A records; both do the same thing. 48 49 *server* should be a single IP address or a reference to an array of IP 50 addresses: 51 52 my @a = nslookup(host => 'example.com', server => '4.2.2.1'); 53 54 my @a = nslookup(host => 'example.com', server => [ '4.2.2.1', '128.103.1.1' ]) 55 56 By default, when doing CNAME, MX, and NS lookups, "nslookup" returns 57 names, not addresses. This is a change from versions prior to 2.0, which 58 always tried to resolve names to addresses. Pass the *recurse => 1* flag 59 to "nslookup" to have it follow CNAME, MX, and NS lookups. Note that 60 this usage of "recurse" is not consistent with the official DNS meaning 61 of recurse. 62 63 # returns soemthing like ("mail.example.com") 64 my @mx = nslookup(domain => 'example.com', type => 'MX'); 65 66 # returns soemthing like ("127.0.0.1") 67 my @mx = nslookup(domain => 'example.com', type => 'MX', recurse => 1); 68 69 SOA lookups return the SOA record in the same format as the `host` tool: 70 71 print nslookup(domain => 'example.com', type => 'SOA'); 72 dns1.icann.org. hostmaster.icann.org. 2011061433 7200 3600 1209600 3600 73 74TIMEOUTS 75 Lookups timeout after 15 seconds by default, but this can be configured 76 by passing *timeout => X* to "nslookup". 77 78DEBUGGING 79 Pass *debug => 1* to "nslookup" to emit debugging messages to STDERR. 80 81AUTHOR 82 darren chamberlain <darren@cpan.org> 83 84