Domain: myDomain.int DNS: myDomain.int Registered: 2013-05-17 Expires: 2023-05-31 Registration period: 1 year VID: no DNSSEC: Unsigned delegation, DNSSEC disabled, no records Status: Active Registrant Handle: ***N/A*** Name: myName Corp Attention: Reggie Person Address: SomeStreet 17 Postalcode: numericZip City: myCity Country: XX Phone: +12 34 56 78 90 Nameservers Hostname: ns1.dom.ext Hostname: ns2.dom.ext Hostname: ns3.dom.ext #### #!/bin/perl use re 'debug'; my $regexp='(?:Nameservers[^\n]*\n.*?)*(?>Hostname:\s+([\S]+)\n)'; my $resp = " Domain: myDomain.int DNS: myDomain.int Registered: 2013-05-17 Expires: 2023-05-31 Registration period: 1 year VID: no DNSSEC: Unsigned delegation, DNSSEC disabled, no records Status: Active Registrant Handle: ***N/A*** Name: myName Corp Attention: Reggie Person Address: SomeStreet 17 Postalcode: numericZip City: myCity Country: XX Phone: +12 34 56 78 90 Nameservers Hostname: ns1.dom.ext Hostname: ns2.dom.ext Hostname: ns3.dom.ext "; # my $regexp = shift; if ( $regexp !~ /^CODE/ ) { my @caps = $resp =~ /$regexp/sg; print "\n\n"; print "caps\n",join(',',@caps),"\n"; }else{ print "IS code\n"; exit; } #### my $w = new Net::XWhois( Server => 'whois.int'); $w->register_parser ( Name => 'PDEF', Retain => 0, Parser => { name => 'Domain:\s+(\S+)\n', dnsname => 'DNS\s+(\S+)\n', nameservers => '(?:Nameservers[^\n]*\n.*?)*(?>Hostname:\s+([\S]+)\n)', registrant => '(?:[rR]egistrant)[^\n]*\n([\n\s\S]*?)[\n\r\f]{2}', status => 'Status:\s+(.*?)\n', remarks => '(DNSSEC:.*?)\n', reg_date => '[rR]egistered:\s+(.*?)\n', reg_period => '[rR]egist.*?[pP]eriod:\s+(.*?)\n', exp_date => '[eE]xpires\s+(.*?)\n', }, ); $w->register_association ( 'whois.int' => [ PDEF, [ qw/int/ ] ] ); $w->lookup ( Domain => '--show-handles --charset=utf-8 '."myDomain.int" );