Net-Domain-Regex
view release on metacpan - search on metacpan
view release on metacpan or search on metacpan
lib/Net/Domain/Regex.pm view on Meta::CPAN
package Net::Domain::Regex;
use strict;
use version; our $VERSION = qv('0.2.1');
our $LOCAL = '/tmp/effective_tld_names.dat';
our $CACHE = '/tmp/effective_tld_names.dat.cache';
our $SOURCE = 'http://mxr.mozilla.org/mozilla-central/source/netwerk/dns/effective_tld_names.dat?raw=1';
use LWP::UserAgent;
sub import {
if( grep { /:pdata/ } @_ ){
$SOURCE = 'https://raw.github.com/petermblair/Perl-CPAN/master/Net-Domain-Regex/misc/tld.txt';
}
}
sub new {
my $class = shift;
my $args = {
local => $LOCAL,
source => $SOURCE,
cache => $CACHE,
@_,
};
my $o = bless $args => $class;
unless( -e $o->{local} ){
$o->pull;
}
$o->refresh;
return $o;
}
sub refresh {
my $self = shift;
use open qw(:std :utf8);
open FD, "<$self->{local}";
my $tlds = {};
my $slds = {};
while( <FD> ){
chomp;
if(/^(\S[^\.\s]+)$/){
$tlds->{$1}++;
}
elsif ( /^\S[^\.\s]+\.(.+)$/ && exists $tlds->{$1} ) {
$slds->{$_}++;
}
}
# any manual overrides
for( qw/ co.uk / ){
$tlds->{"$_"}++;
}
$self->{tld} = $tlds;
$self->{sld} = $slds;
}
sub pull {
my $self = shift;
my $ua = LWP::UserAgent->new;
my $req = HTTP::Request->new( GET => $self->{source} );
my $res = $ua->request( $req );
if( $res->is_success ){
open FD, ">$self->{local}";
local $/;
print FD $res->content;
} else {
die $res->status_line;
}
}
sub generate_regex {
my $self = shift;
my @a;
view all matches for this distributionview release on metacpan - search on metacpan
( run in 1.056 second using v1.00-cache-2.02-grep-82fe00e-cpan-503542c4f10 )