our
$VERSION
= 1.20250323211830;
my
$formatters
= [
{
'format'
=>
'$1 $2'
,
'leading_digits'
=>
'[24-6]'
,
'national_rule'
=>
'0$1'
,
'pattern'
=>
'(\\d{2})(\\d{5,7})'
},
{
'format'
=>
'$1 $2'
,
'leading_digits'
=>
'[17]'
,
'national_rule'
=>
'0$1'
,
'pattern'
=>
'(\\d{3})(\\d{6})'
},
{
'format'
=>
'$1 $2 $3'
,
'leading_digits'
=>
'[89]'
,
'national_rule'
=>
'0$1'
,
'pattern'
=>
'(\\d{3})(\\d{3})(\\d{3,4})'
}
];
my
$validators
= {
'fixed_line'
=> '
(?:
4[245]|
5[1-79]|
6[01457-9]
)\\d{5,7}|
(?:
4[136]|
5[08]|
62
)\\d{7}|
(?:
[24]0|
66
)\\d{6,7}
',
'geographic'
=> '
(?:
4[245]|
5[1-79]|
6[01457-9]
)\\d{5,7}|
(?:
4[136]|
5[08]|
62
)\\d{7}|
(?:
[24]0|
66
)\\d{6,7}
',
'mobile'
=> '
(?:
1(?:
0[0-8]|
1[0-7]|
2[014]|
30
)|
7\\d\\d
)\\d{6}
',
'pager'
=>
''
,
'personal_number'
=>
''
,
'specialrate'
=>
'(900[02-9]\\d{5})'
,
'toll_free'
=>
'800[02-8]\\d{5,6}'
,
'voip'
=>
''
};
my
%areanames
= ();
$areanames
{en} = {
"2542"
,
"Nairobi"
,
"25459"
,
"Homabay\/Migori"
,
"25444"
,
"Machakos\/Makueni\/Mwingi\/Kitui"
,
"25443"
,
"Voi\/Wundanyi\/Mwatate\/Taveta"
,
"25455"
,
"Bungoma\/Busia"
,
"25440"
,
"Kwale\/Ukunda\/Msambweni\/Lungalunga"
,
"25445"
,
"Kajiado\/Ngong\/Loitokitok\/Athi\ River"
,
"25450"
,
"Naivasha\/Narok\/Gilgil"
,
"25454"
,
"Kitale\/Moi\'s\ Bridge\/Kapenguria\/Lodwar"
,
"25453"
,
"Eldoret\/Turbo\/Kapsabet\/Iten\/Kabarnet"
,
"25442"
,
"Malindi\/Lamu\/Garsen"
,
"25467"
,
"Kiambu\/Kikuyu"
,
"25468"
,
"Embu"
,
"25466"
,
"Thika\/Ruiru"
,
"25452"
,
"Kericho\/Bomet"
,
"25451"
,
"Nakuru\/Njoro\/Molo"
,
"25441"
,
"Mombasa\/Mariakani\/Kilifi"
,
"25461"
,
"Nyeri\/Karatina"
,
"25456"
,
"Kakamega\/Mbale\/Butere\/Mumias\/Vihiga"
,
"25462"
,
"Nanyuki"
,
"25457"
,
"Kisumu\/Siaya\/Maseno"
,
"25446"
,
"Garissa\/Hola\/Wajir\/Mandera"
,
"25458"
,
"Kisii\/Kilgoris\/Oyugis\/Nyamira"
,
"25460"
,
"Muranga\/Kerugoya"
,
"25464"
,
"Meru\/Maua\/Chuka"
,
"25465"
,
"Nyahururu\/Maralal"
,
"25469"
,
"Marsabit\/Moyale"
,};
my
$timezones
= {
''
=> [
'Africa/Nairobi'
]
};
sub
new {
my
$class
=
shift
;
my
$number
=
shift
;
$number
=~ s/(^\+254|\D)//g;
my
$self
=
bless
({
country_code
=>
'254'
,
number
=>
$number
,
formatters
=>
$formatters
,
validators
=>
$validators
,
timezones
=>
$timezones
,
areanames
=> \
%areanames
},
$class
);
return
$self
if
(
$self
->is_valid());
$number
=~ s/^(?:0)//;
$self
=
bless
({
country_code
=>
'254'
,
number
=>
$number
,
formatters
=>
$formatters
,
validators
=>
$validators
,
areanames
=> \
%areanames
},
$class
);
return
$self
->is_valid() ?
$self
:
undef
;
}
1;