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 (<DAT>) {
+ 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