Anonymous Monk has asked for the wisdom of the Perl Monks concerning the following question:
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
According to the source (https://metacpan.org/dist/Net-XWhois/source/lib/Net/XWhois.pm#L660), the re's in the parser definition are called with the /sg modifiers.
So, off to an on-line regex tester to see if my idea would work: https://regex101.com/r/koIpfH/1
Great, so far, so good.
Then I created a small script in order to avoid "hammering" the local whois server:
#!/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; }
Therefore, I beseech the monastary, I'm in need of elucidation. Here's my parser definition etc.:
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 +" );
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: /re/ issue - hacking Net::XWhois
by kcott (Archbishop) on Sep 05, 2022 at 17:30 UTC | |
by Anonymous Monk on Sep 06, 2022 at 05:33 UTC | |
by kcott (Archbishop) on Sep 06, 2022 at 09:55 UTC |