our
$VERSION
= 1.20250323211826;
my
$formatters
= [
{
'format'
=>
'$1 $2 $3'
,
'leading_digits'
=> '
[2-8]|
9[015-7]
',
'pattern'
=>
'(\\d{3})(\\d{3})(\\d{3})'
},
{
'format'
=>
'$1 $2 $3 $4'
,
'leading_digits'
=>
'96'
,
'pattern'
=>
'(\\d{2})(\\d{3})(\\d{3})(\\d{2})'
},
{
'format'
=>
'$1 $2 $3 $4'
,
'leading_digits'
=>
'9'
,
'pattern'
=>
'(\\d{2})(\\d{3})(\\d{3})(\\d{3})'
},
{
'format'
=>
'$1 $2 $3 $4'
,
'leading_digits'
=>
'9'
,
'pattern'
=>
'(\\d{3})(\\d{3})(\\d{3})(\\d{3})'
}
];
my
$validators
= {
'fixed_line'
=> '
(?:
2\\d|
3[1257-9]|
4[16-9]|
5[13-9]
)\\d{7}
',
'geographic'
=> '
(?:
2\\d|
3[1257-9]|
4[16-9]|
5[13-9]
)\\d{7}
',
'mobile'
=> '
(?:
60[1-8]\\d|
7(?:
0(?:
[2-5]\\d|
60
)|
19[0-2]|
[2379]\\d\\d
)
)\\d{5}
',
'pager'
=>
''
,
'personal_number'
=>
'70[01]\\d{6}'
,
'specialrate'
=> '(8[134]\\d{7})|(
9(?:
0[05689]|
76
)\\d{6}
)|(
9(?:
5\\d|
7[2-4]
)\\d{6}
)',
'toll_free'
=>
'800\\d{6}'
,
'voip'
=>
'9[17]0\\d{6}'
};
my
%areanames
= ();
$areanames
{en} = {
"42054"
,
"South\ Moravian\ Region"
,
"42058"
,
"Olomouc\ Region"
,
"42046"
,
"Pardubice\ Region"
,
"42053"
,
"South\ Moravian\ Region"
,
"42057"
,
"Zlín\ Region"
,
"42055"
,
"Moravian\-Silesian\ Region"
,
"42047"
,
"Ústí\ nad\ Labem\ Region"
,
"42039"
,
"South\ Bohemian\ Region"
,
"42048"
,
"Liberec\ Region"
,
"42056"
,
"Vysočina\ Region"
,
"4202"
,
"Prague"
,
"42059"
,
"Moravian\-Silesian\ Region"
,
"42035"
,
"Karlovy\ Vary\ Region"
,
"42037"
,
"Plzeň\ Region"
,
"42038"
,
"South\ Bohemian\ Region"
,
"42049"
,
"Hradec\ Králové\ Region"
,
"42041"
,
"Ústí\ nad\ Labem\ Region"
,
"42032"
,
"Central\ Bohemian\ Region"
,
"42051"
,
"South\ Moravian\ Region"
,
"42031"
,
"Central\ Bohemian\ Region"
,};
my
$timezones
= {
''
=> [
'Europe/Prague'
]
};
sub
new {
my
$class
=
shift
;
my
$number
=
shift
;
$number
=~ s/(^\+420|\D)//g;
my
$self
=
bless
({
country_code
=>
'420'
,
number
=>
$number
,
formatters
=>
$formatters
,
validators
=>
$validators
,
timezones
=>
$timezones
,
areanames
=> \
%areanames
},
$class
);
return
$self
->is_valid() ?
$self
:
undef
;
}
1;