|
our $VERSION = 1.20250323211834;
my $formatters = [
{
'format' => '$1' ,
'leading_digits' => '19' ,
'pattern' => '(\\d{5})'
},
{
'format' => '$1 $2' ,
'leading_digits' => '
11|
20|
64
',
'pattern' => '(\\d{3})(\\d{3})'
},
{
'format' => '$1 $2 $3' ,
'leading_digits' => '
(?:
1[2-8]|
2[2-69]|
3[2-4]|
4[1-468]|
5[24-689]|
6[1-3578]|
7[14-7]|
8[1-79]|
9[145]
)19
',
'pattern' => '(\\d{2})(\\d{2})(\\d{3})'
},
{
'format' => '$1 $2 $3' ,
'leading_digits' => '64' ,
'pattern' => '(\\d{3})(\\d{2})(\\d{2,3})'
},
{
'format' => '$1 $2 $3' ,
'leading_digits' => '
21|
39|
45|
5[0137]|
6[0469]|
7[02389]|
8(?:
0[14]|
8
)
',
'pattern' => '(\\d{3})(\\d{3})(\\d{3})'
},
{
'format' => '$1 $2 $3 $4' ,
'leading_digits' => '
1[2-8]|
[2-7]|
8[1-79]|
9[145]
',
'pattern' => '(\\d{2})(\\d{3})(\\d{2})(\\d{2})'
},
{
'format' => '$1 $2 $3' ,
'leading_digits' => '8' ,
'pattern' => '(\\d{3})(\\d{3})(\\d{3,4})'
}
];
my $validators = {
'fixed_line' => '
47\\d{7}|
(?:
1[2-8]|
2[2-69]|
3[2-4]|
4[1-468]|
5[24-689]|
6[1-3578]|
7[14-7]|
8[1-79]|
9[145]
)(?:
[02-9]\\d{6}|
1(?:
[0-8]\\d{5}|
9\\d{3}(?:
\\d{2}
)?
)
)
',
'geographic' => '
47\\d{7}|
(?:
1[2-8]|
2[2-69]|
3[2-4]|
4[1-468]|
5[24-689]|
6[1-3578]|
7[14-7]|
8[1-79]|
9[145]
)(?:
[02-9]\\d{6}|
1(?:
[0-8]\\d{5}|
9\\d{3}(?:
\\d{2}
)?
)
)
',
'mobile' => '
2131[89]\\d{4}|
21(?:
1[013-5]|
2\\d|
3[2-9]
)\\d{5}|
(?:
45|
5[0137]|
6[069]|
7[2389]|
88
)\\d{7}
',
'pager' => '64\\d{4,7}' ,
'personal_number' => '' ,
'specialrate' => '(801\\d{6})|(70[01346-8]\\d{6})|(804\\d{6})' ,
'toll_free' => '800\\d{6,7}' ,
'voip' => '39\\d{7}'
};
my %areanames = ();
$areanames {pl} = { "4867" , "Piła" ,
"4871" , "Wrocław" ,
"4859" , "Słupsk" ,
"4874" , "Wałbrzych" ,
"4886" , "Łomża" ,
"4854" , "Włocławek" ,
"4887" , "Suwałki" ,
"4833" , "Bielsko\-Biała" ,
"4824" , "Płock" ,
"4885" , "Białystok" ,
"4842" , "Łódź" ,
"4829" , "Ostrołęka" ,
"4883" , "Biała\ Podlaska" ,
"4822" , "Warszawa" ,
"4882" , "Chełm" ,};
$areanames {en} = { "4816" , "Przemyśl" ,
"4886" , "Lomża" ,
"4855" , "Elbląg" ,
"4854" , "Wloclawek" ,
"4817" , "Rzeszów" ,
"4846" , "Skierniewice" ,
"4887" , "Suwalki" ,
"4867" , "Pila" ,
"4871" , "Wroclaw" ,
"4858" , "Gdańsk" ,
"4859" , "Slupsk" ,
"4874" , "Walbrzych" ,
"4852" , "Bydgoszcz" ,
"4875" , "Jelenia\ Góra" ,
"4842" , "Lódź" ,
"4876" , "Legnica" ,
"4843" , "Sieradz" ,
"4891" , "Szczecin" ,
"4848" , "Radom" ,
"4865" , "Leszno" ,
"4877" , "Opole" ,
"4812" , "Kraków" ,
"4889" , "Olsztyn" ,
"4829" , "Ostrolęka" ,
"4813" , "Krosno" ,
"4883" , "Biala\ Podlaska" ,
"4823" , "Ciechanów" ,
"4861" , "Poznań" ,
"4834" , "Częstochowa" ,
"4894" , "Koszalin" ,
"4818" , "Nowy\ Sącz" ,
"4895" , "Gorzów\ Wielkopolski" ,
"4822" , "Warsaw" ,
"4882" , "Chelm" ,
"4863" , "Konin" ,
"4881" , "Lublin" ,
"4862" , "Kalisz" ,
"4844" , "Piotrków\ Trybunalski" ,
"4856" , "Toruń" ,
"4868" , "Zielona\ Góra" ,
"4833" , "Bielsko\-Biala" ,
"4824" , "Plock" ,
"4884" , "Zamość" ,
"4885" , "Bialystok" ,
"4832" , "Katowice" ,
"4825" , "Siedlce" ,
"4815" , "Tarnobrzeg" ,
"4841" , "Kielce" ,
"4814" , "Tarnów" ,};
my $timezones = {
'' => [
'Europe/Warsaw'
]
};
sub new {
my $class = shift ;
my $number = shift ;
$number =~ s/(^\+48|\D)//g;
my $self = bless ({ country_code => '48' , number => $number , formatters => $formatters , validators => $validators , timezones => $timezones , areanames => \ %areanames }, $class );
return $self ->is_valid() ? $self : undef ;
}
1;
|