diff -ur Mozilla-PublicSuffix-v0.1.19/Build.PL Mozilla-PublicSuffix-v0.1.19.unbundle/Build.PL --- Mozilla-PublicSuffix-v0.1.19/Build.PL 2014-07-23 18:54:16.000000000 +0300 +++ Mozilla-PublicSuffix-v0.1.19.unbundle/Build.PL 2015-06-22 15:53:59.652853750 +0300 @@ -40,6 +40,7 @@ ); my $dat_file = "effective_tld_names.dat"; +my $system_dat_file = $builder->config('system_publicsuffix_list'); my $get_new_list = $builder->y_n( "Check for a new version of the Public Suffix List?", "N" ); @@ -73,7 +74,13 @@ } IO::File->new($dat_file)->getlines; tie my @pm, "Tie::File", "lib/Mozilla/PublicSuffix.pm"; -for (@pm) { s/(my %rules = qw\()\)/$1$rules)/ and last } +for (@pm) { + if ($system_dat_file) { + s/(my %rules = qw\(\);)/$1\n_parse_file(\\%rules,\"$system_dat_file\");/ and last + } else { + s/(my %rules = qw\()\)/$1$rules)/ and last + } +} untie @pm; $builder->create_build_script; diff -ur Mozilla-PublicSuffix-v0.1.19/lib/Mozilla/PublicSuffix.pm Mozilla-PublicSuffix-v0.1.19.unbundle/lib/Mozilla/PublicSuffix.pm --- Mozilla-PublicSuffix-v0.1.19/lib/Mozilla/PublicSuffix.pm 2014-07-23 18:54:16.000000000 +0300 +++ Mozilla-PublicSuffix-v0.1.19.unbundle/lib/Mozilla/PublicSuffix.pm 2015-06-22 15:53:59.653853720 +0300 @@ -3,6 +3,7 @@ use strict; use warnings FATAL => 'all'; use utf8; +use open ":encoding(UTF-8)"; use Exporter qw(import); use URI::_idna; @@ -93,6 +94,19 @@ } } +sub _parse_file { + my $rulesref = shift; + my $dat_file = shift; + open DAT ,"<:encoding(UTF-8)", "$dat_file"; + foreach () { + s/\s//g; + if ( s/^!// ) { $rulesref->{$_} = "e" } # exception rule + elsif ( s/^\*\.// ) { $rulesref->{$_} = "w" } # wildcard rule + elsif ( /^[\p{Word}]/ ) { $rulesref->{$_} = "i" } # identity rule + } + close DAT; +} + 1; =encoding utf8