$VERSION
= 1.6001;
my
$use_uk
= 0;
sub
import
{
shift
;
my
$export
= 1;
foreach
my
$param
(
@_
) {
if
(
lc
(
$param
) eq
'noexport'
) {
$export
= 0; }
elsif
(
lc
(
$param
) eq
'uk'
) {
$use_uk
= 1; }
}
if
(
$export
) {
my
$callpkg
=
caller
(1);
no
strict
'refs'
;
*{
"$callpkg\::phone2country"
} = \&{__PACKAGE__.
"\::phone2country"
};
}
}
my
%idd_codes
= (
20
=>
'EG'
,
212
=>
'MA'
,
213
=>
'DZ'
,
216
=>
'TN'
,
218
=>
'LY'
,
220
=>
'GM'
,
221
=>
'SN'
,
222
=>
'MR'
,
223
=>
'ML'
,
224
=>
'GN'
,
225
=>
'CI'
,
226
=>
'BF'
,
227
=>
'NE'
,
228
=>
'TG'
,
229
=>
'BJ'
,
230
=>
'MU'
,
231
=>
'LR'
,
232
=>
'SL'
,
233
=>
'GH'
,
234
=>
'NG'
,
235
=>
'TD'
,
236
=>
'CF'
,
237
=>
'CM'
,
238
=>
'CV'
,
239
=>
'ST'
,
240
=>
'GQ'
,
241
=>
'GA'
,
242
=>
'CG'
,
243
=>
'CD'
,
244
=>
'AO'
,
245
=>
'GW'
,
246
=>
'IO'
,
247
=>
'AC'
,
248
=>
'SC'
,
249
=>
'SD'
,
250
=>
'RW'
,
251
=>
'ET'
,
252
=>
'SO'
,
253
=>
'DJ'
,
254
=>
'KE'
,
255
=>
'TZ'
,
256
=>
'UG'
,
257
=>
'BI'
,
258
=>
'MZ'
,
260
=>
'ZM'
,
261
=>
'MG'
,
2622691
=>
'YT'
,
26226960
=>
'YT'
,
26226961
=>
'YT'
,
26226962
=>
'YT'
,
26226963
=>
'YT'
,
26226964
=>
'YT'
,
26263920
=>
'YT'
,
26263921
=>
'YT'
,
26263922
=>
'YT'
,
26263923
=>
'YT'
,
26263924
=>
'YT'
,
26263965
=>
'YT'
,
26263966
=>
'YT'
,
26263967
=>
'YT'
,
26263968
=>
'YT'
,
26263969
=>
'YT'
,
262
=>
'RE'
,
263
=>
'ZW'
,
264
=>
'NA'
,
265
=>
'MW'
,
266
=>
'LS'
,
267
=>
'BW'
,
268
=>
'SZ'
,
269
=>
'KM'
,
27
=>
'ZA'
,
290
=>
'SH'
,
291
=>
'ER'
,
297
=>
'AW'
,
298
=>
'FO'
,
299
=>
'GL'
,
30
=>
'GR'
,
31
=>
'NL'
,
32
=>
'BE'
,
33
=>
'FR'
,
34
=>
'ES'
,
349567
=>
'GI'
,
350
=>
'GI'
,
351
=>
'PT'
,
352
=>
'LU'
,
353
=>
'IE'
,
35348
=>
'GB'
,
354
=>
'IS'
,
355
=>
'AL'
,
356
=>
'MT'
,
357
=>
'CY'
,
358
=>
'FI'
,
359
=>
'BG'
,
36
=>
'HU'
,
370
=>
'LT'
,
371
=>
'LV'
,
372
=>
'EE'
,
373
=>
'MD'
,
374
=>
'AM'
,
375
=>
'BY'
,
376
=>
'AD'
,
377
=>
'MC'
,
378
=>
'SM'
,
379
=>
'VA'
,
380
=>
'UA'
,
381
=>
'RS'
,
382
=>
'ME'
,
385
=>
'HR'
,
386
=>
'SI'
,
387
=>
'BA'
,
389
=>
'MK'
,
39
=>
'IT'
,
3966982
=>
'VA'
,
40
=>
'RO'
,
41
=>
'CH'
,
420
=>
'CZ'
,
421
=>
'SK'
,
423
=>
'LI'
,
43
=>
'AT'
,
44
=>
'GB'
,
45
=>
'DK'
,
46
=>
'SE'
,
47
=>
'NO'
,
48
=>
'PL'
,
49
=>
'DE'
,
500
=>
'FK'
,
501
=>
'BZ'
,
502
=>
'GT'
,
503
=>
'SV'
,
504
=>
'HN'
,
505
=>
'NI'
,
506
=>
'CR'
,
507
=>
'PA'
,
508
=>
'PM'
,
509
=>
'HT'
,
51
=>
'PE'
,
52
=>
'MX'
,
53
=>
'CU'
,
54
=>
'AR'
,
55
=>
'BR'
,
56
=>
'CL'
,
57
=>
'CO'
,
58
=>
'VE'
,
590
=>
'GP'
,
591
=>
'BO'
,
592
=>
'GY'
,
593
=>
'EC'
,
594
=>
'GF'
,
595
=>
'PY'
,
596
=>
'MQ'
,
597
=>
'SR'
,
598
=>
'UY'
,
599
=>
'AN'
,
60
=>
'MY'
,
61
=>
'AU'
,
6189162
=>
'CC'
,
6189164
=>
'CX'
,
62
=>
'ID'
,
63
=>
'PH'
,
64
=>
'NZ'
,
65
=>
'SG'
,
66
=>
'TH'
,
670
=>
'TL'
,
67210
=>
'AQ'
,
67211
=>
'AQ'
,
67212
=>
'AQ'
,
67213
=>
'AQ'
,
6723
=>
'NF'
,
673
=>
'BN'
,
674
=>
'NR'
,
675
=>
'PG'
,
676
=>
'TO'
,
677
=>
'SB'
,
678
=>
'VU'
,
679
=>
'FJ'
,
680
=>
'PW'
,
681
=>
'WF'
,
682
=>
'CK'
,
683
=>
'NU'
,
685
=>
'WS'
,
686
=>
'KI'
,
687
=>
'NC'
,
688
=>
'TV'
,
689
=>
'PF'
,
690
=>
'TK'
,
691
=>
'FM'
,
692
=>
'MH'
,
81
=>
'JP'
,
82
=>
'KR'
,
84
=>
'VN'
,
850
=>
'KP'
,
852
=>
'HK'
,
853
=>
'MO'
,
855
=>
'KH'
,
856
=>
'LA'
,
86
=>
'CN'
,
880
=>
'BD'
,
886
=>
'TW'
,
90
=>
'TR'
,
91
=>
'IN'
,
92
=>
'PK'
,
93
=>
'AF'
,
94
=>
'LK'
,
95
=>
'MM'
,
960
=>
'MV'
,
961
=>
'LB'
,
962
=>
'JO'
,
963
=>
'SY'
,
964
=>
'IQ'
,
965
=>
'KW'
,
966
=>
'SA'
,
967
=>
'YE'
,
968
=>
'OM'
,
970
=>
'PS'
,
971
=>
'AE'
,
972
=>
'IL'
,
973
=>
'BH'
,
974
=>
'QA'
,
975
=>
'BT'
,
976
=>
'MN'
,
977
=>
'NP'
,
98
=>
'IR'
,
992
=>
'TJ'
,
993
=>
'TM'
,
994
=>
'AZ'
,
995
=>
'GE'
,
996
=>
'KG'
,
998
=>
'UZ'
,
3883
=>
'ETNS'
,
800
=>
'InternationalFreephone'
,
808
=>
'SharedCostServices'
,
870
=>
'Inmarsat'
,
871
=>
'Inmarsat'
,
872
=>
'Inmarsat'
,
873
=>
'Inmarsat'
,
874
=>
'Inmarsat'
,
878
=>
'UniversalPersonalTelecoms'
,
8812
=>
'Ellipso'
,
8813
=>
'Ellipso'
,
8816
=>
'Iridium'
,
8817
=>
'Iridium'
,
8818
=>
'Globalstar'
,
8819
=>
'Globalstar'
,
882
=>
'InternationalNetworks'
,
979
=>
'InternationalPremiumRate'
,
991
=>
'ITPCS'
,
);
my
%prefix_codes
= (
'AD'
=> [
'376'
,
'00'
,
undef
],
'AE'
=> [
'971'
,
'00'
,
'0'
],
'AF'
=> [
'93'
,
'00'
,
'0'
],
'AG'
=> [
'1'
,
'011'
,
'1'
],
'AI'
=> [
'1'
,
'011'
,
'1'
],
'AL'
=> [
'355'
,
'00'
,
'0'
],
'AM'
=> [
'374'
,
'00'
,
'8'
],
'AN'
=> [
'599'
,
'00'
,
'0'
],
'AO'
=> [
'244'
,
'00'
,
'0'
],
'AQ'
=> [
'672'
,
undef
,
undef
],
'AR'
=> [
'54'
,
'00'
,
'0'
],
'AS'
=> [
'1'
,
'011'
,
'1'
],
'AT'
=> [
'43'
,
'00'
,
'0'
],
'AU'
=> [
'61'
,
'00'
,
undef
],
'AW'
=> [
'297'
,
'00'
,
undef
],
'AZ'
=> [
'994'
,
'00'
,
'8'
],
'BA'
=> [
'387'
,
'00'
,
'0'
],
'BB'
=> [
'1'
,
'011'
,
'1'
],
'BD'
=> [
'880'
,
'00'
,
'0'
],
'BE'
=> [
'32'
,
'00'
,
'0'
],
'BF'
=> [
'226'
,
'00'
,
undef
],
'BG'
=> [
'359'
,
'00'
,
'0'
],
'BH'
=> [
'973'
,
'00'
,
undef
],
'BI'
=> [
'257'
,
'00'
,
undef
],
'BJ'
=> [
'229'
,
'00'
,
undef
],
'BM'
=> [
'1'
,
'011'
,
'1'
],
'BN'
=> [
'673'
,
'00'
,
'0'
],
'BO'
=> [
'591'
,
'00'
,
'0'
],
'BR'
=> [
'55'
,
'00'
,
'0'
],
'BS'
=> [
'1'
,
'011'
,
'1'
],
'BT'
=> [
'975'
,
'00'
,
undef
],
'BV'
=> [
'47'
,
'00'
,
undef
],
'BW'
=> [
'267'
,
'00'
,
undef
],
'BY'
=> [
'375'
,
'810'
,
'8'
],
'BZ'
=> [
'501'
,
'00'
,
'0'
],
'CA'
=> [
'1'
,
'011'
,
'1'
],
'CC'
=> [
'61'
,
'0011'
,
'0'
],
'CD'
=> [
'243'
,
'00'
,
undef
],
'CF'
=> [
'236'
,
'00'
,
undef
],
'CG'
=> [
'242'
,
'00'
,
undef
],
'CH'
=> [
'41'
,
'00'
,
'0'
],
'CI'
=> [
'225'
,
'00'
,
'0'
],
'CK'
=> [
'682'
,
'00'
,
'00'
],
'CL'
=> [
'56'
,
'00'
,
'0'
],
'CM'
=> [
'237'
,
'00'
,
undef
],
'CN'
=> [
'86'
,
'00'
,
'0'
],
'CO'
=> [
'57'
,
'009'
,
'09'
],
'CR'
=> [
'506'
,
'00'
,
undef
],
'CU'
=> [
'53'
,
'119'
,
'0'
],
'CV'
=> [
'238'
,
'0'
,
undef
],
'CX'
=> [
'61'
,
'0011'
,
'0'
],
'CY'
=> [
'357'
,
'00'
,
undef
],
'CZ'
=> [
'420'
,
'00'
,
undef
],
'DE'
=> [
'49'
,
'00'
,
'0'
],
'DJ'
=> [
'253'
,
'00'
,
undef
],
'DK'
=> [
'45'
,
'00'
,
undef
],
'DM'
=> [
'1'
,
'011'
, 1],
'DO'
=> [
'1'
,
'011'
, 1],
'DZ'
=> [
'213'
,
'00'
,
'7'
],
'EC'
=> [
'593'
,
'00'
,
'0'
],
'EE'
=> [
'372'
,
'00'
,
undef
],
'EG'
=> [
'20'
,
'00'
,
'0'
],
'EH'
=> [
'212'
,
'00'
,
'0'
],
'ER'
=> [
'291'
,
'00'
,
'0'
],
'ES'
=> [
'34'
,
'00'
,
undef
],
'ET'
=> [
'251'
,
'00'
,
'0'
],
'FI'
=> [
'358'
,
'00'
,
'0'
],
'FJ'
=> [
'679'
,
'00'
,
undef
],
'FK'
=> [
'500'
,
'00'
,
undef
],
'FM'
=> [
'691'
,
'011'
,
'1'
],
'FO'
=> [
'298'
,
'00'
,
undef
],
'FR'
=> [
'33'
,
'00'
,
undef
],
'GA'
=> [
'241'
,
'00'
,
undef
],
'GB'
=> [
'44'
,
'00'
,
'0'
],
'GD'
=> [
'1'
,
'011'
,
'4'
],
'GE'
=> [
'995'
,
'810'
,
'8'
],
'GF'
=> [
'594'
,
'00'
,
undef
],
'GH'
=> [
'233'
,
'00'
,
undef
],
'GI'
=> [
'350'
,
'00'
,
undef
],
'GL'
=> [
'299'
,
'00'
,
undef
],
'GM'
=> [
'220'
,
'00'
,
undef
],
'GN'
=> [
'224'
,
'00'
,
'0'
],
'GP'
=> [
'590'
,
'00'
,
undef
],
'GQ'
=> [
'240'
,
'00'
,
undef
],
'GR'
=> [
'30'
,
'00'
,
undef
],
'GS'
=> [
'995'
,
'810'
,
'8'
],
'GT'
=> [
'502'
,
'00'
,
undef
],
'GU'
=> [
'1'
,
'011'
,
'1'
],
'GW'
=> [
'245'
,
'00'
,
undef
],
'GY'
=> [
'592'
,
'001'
,
'0'
],
'HK'
=> [
'852'
,
'001'
,
undef
],
'HM'
=> [
'692'
,
'00'
,
'0'
],
'HN'
=> [
'504'
,
'00'
,
'0'
],
'HR'
=> [
'385'
,
'00'
,
'0'
],
'HT'
=> [
'509'
,
'00'
,
'0'
],
'HU'
=> [
'36'
,
'00'
,
'06'
],
'ID'
=> [
'62'
,
'001'
,
'0'
],
'IE'
=> [
'353'
,
'00'
,
'0'
],
'IL'
=> [
'972'
,
'00'
,
'0'
],
'IN'
=> [
'91'
,
'00'
,
'0'
],
'IO'
=> [
'246'
,
'00'
,
undef
],
'IQ'
=> [
'964'
,
'00'
,
'0'
],
'IR'
=> [
'98'
,
'00'
,
'0'
],
'IS'
=> [
'354'
,
'00'
,
'0'
],
'IT'
=> [
'39'
,
'00'
,
undef
],
'JM'
=> [
'1'
,
'011'
,
'1'
],
'JO'
=> [
'962'
,
'00'
,
'0'
],
'JP'
=> [
'81'
,
'001'
,
'0'
],
'KE'
=> [
'254'
,
'000'
,
'0'
],
'KG'
=> [
'996'
,
'00'
,
'0'
],
'KH'
=> [
'855'
,
'001'
,
'0'
],
'KI'
=> [
'686'
,
'00'
,
'0'
],
'KM'
=> [
'269'
,
'00'
,
undef
],
'KN'
=> [
'1'
,
'011'
,
'1'
],
'KP'
=> [
'850'
,
'00'
,
'0'
],
'KR'
=> [
'82'
,
'001'
,
'0'
],
'KW'
=> [
'965'
,
'00'
,
'0'
],
'KY'
=> [
'1'
,
'011'
,
'1'
],
'KZ'
=> [
'7'
,
'810'
,
'8'
],
'LA'
=> [
'856'
,
'00'
,
'0'
],
'LB'
=> [
'961'
,
'00'
,
'0'
],
'LC'
=> [
'1'
,
'011'
,
'1'
],
'LI'
=> [
'423'
,
'00'
,
undef
],
'LK'
=> [
'94'
,
'00'
,
'0'
],
'LR'
=> [
'231'
,
'00'
,
'22'
],
'LS'
=> [
'266'
,
'00'
,
'0'
],
'LT'
=> [
'370'
,
'00'
,
'8'
],
'LU'
=> [
'352'
,
'00'
,
undef
],
'LV'
=> [
'371'
,
'00'
,
'8'
],
'LY'
=> [
'218'
,
'00'
,
'0'
],
'MA'
=> [
'212'
,
'00'
,
undef
],
'MC'
=> [
'377'
,
'00'
,
'0'
],
'MD'
=> [
'373'
,
'00'
,
'0'
],
'ME'
=> [
'382'
,
'99'
,
'0'
],
'MG'
=> [
'261'
,
'00'
,
'0'
],
'MH'
=> [
'692'
,
'011'
,
'1'
],
'MK'
=> [
'389'
,
'00'
,
'0'
],
'ML'
=> [
'223'
,
'00'
,
'0'
],
'MM'
=> [
'95'
,
'00'
,
undef
],
'MN'
=> [
'976'
,
'001'
,
'0'
],
'MO'
=> [
'853'
,
'00'
,
'0'
],
'MP'
=> [
'1'
,
'011'
,
'1'
],
'MQ'
=> [
'596'
,
'00'
,
'0'
],
'MR'
=> [
'222'
,
'00'
,
'0'
],
'MS'
=> [
'1'
,
'011'
,
'1'
],
'MT'
=> [
'356'
,
'00'
,
'21'
],
'MU'
=> [
'230'
,
'00'
,
'0'
],
'MV'
=> [
'960'
,
'00'
,
'0'
],
'MW'
=> [
'265'
,
'00'
,
undef
],
'MX'
=> [
'52'
,
'00'
,
'01'
],
'MY'
=> [
'60'
,
'00'
,
'0'
],
'MZ'
=> [
'258'
,
'00'
,
'0'
],
'NA'
=> [
'264'
,
'00'
,
'0'
],
'NC'
=> [
'687'
,
'00'
,
'0'
],
'NE'
=> [
'227'
,
'00'
,
'0'
],
'NF'
=> [
'672'
,
'00'
,
undef
],
'NG'
=> [
'234'
,
'009'
,
'0'
],
'NI'
=> [
'505'
,
'00'
,
'0'
],
'NL'
=> [
'31'
,
'00'
,
'0'
],
'NO'
=> [
'47'
,
'00'
,
undef
],
'NP'
=> [
'977'
,
'00'
,
'0'
],
'NR'
=> [
'674'
,
'00'
,
'0'
],
'NU'
=> [
'683'
,
'00'
,
'0'
],
'NZ'
=> [
'64'
,
'00'
,
'0'
],
'OM'
=> [
'968'
,
'00'
,
'0'
],
'PA'
=> [
'507'
,
'00'
,
'0'
],
'PE'
=> [
'51'
,
'00'
,
'0'
],
'PF'
=> [
'689'
,
'00'
,
undef
],
'PG'
=> [
'675'
,
'05'
,
undef
],
'PH'
=> [
'63'
,
'00'
,
'0'
],
'PK'
=> [
'92'
,
'00'
,
'0'
],
'PL'
=> [
'48'
,
'00'
,
'0'
],
'PM'
=> [
'508'
,
'00'
,
'0'
],
'PN'
=> [
'872'
,
undef
,
undef
],
'PR'
=> [
'1'
,
'011'
,
'1'
],
'PS'
=> [
'970'
,
'00'
,
'0'
],
'PT'
=> [
'351'
,
'00'
,
undef
],
'PW'
=> [
'680'
,
'011'
,
undef
],
'PY'
=> [
'595'
,
'002'
,
'0'
],
'QA'
=> [
'974'
,
'00'
,
'0'
],
'RE'
=> [
'262'
,
'00'
,
'0'
],
'RO'
=> [
'40'
,
'00'
,
'0'
],
'RS'
=> [
'381'
,
'99'
,
'0'
],
'RU'
=> [
'7'
,
'810'
,
'8'
],
'RW'
=> [
'250'
,
'00'
,
'0'
],
'SA'
=> [
'966'
,
'00'
,
'0'
],
'SB'
=> [
'677'
,
'00'
,
undef
],
'SC'
=> [
'248'
,
'00'
,
'0'
],
'SD'
=> [
'249'
,
'00'
,
'0'
],
'SE'
=> [
'46'
,
'00'
,
'0'
],
'SG'
=> [
'65'
,
'001'
,
undef
],
'SH'
=> [
'290'
,
'00'
,
undef
],
'SI'
=> [
'386'
,
'00'
,
'0'
],
'SJ'
=> [
'378'
,
'00'
,
'0'
],
'SK'
=> [
'421'
,
'00'
,
'0'
],
'SL'
=> [
'232'
,
'00'
,
'0'
],
'SM'
=> [
'378'
,
'00'
,
'0'
],
'SN'
=> [
'221'
,
'00'
,
'0'
],
'SO'
=> [
'252'
,
'00'
,
undef
],
'SR'
=> [
'597'
,
'00'
,
undef
],
'ST'
=> [
'239'
,
'00'
,
'0'
],
'SV'
=> [
'503'
,
'00'
,
undef
],
'SY'
=> [
'963'
,
'00'
,
'0'
],
'SZ'
=> [
'268'
,
'00'
,
undef
],
'TC'
=> [
'1'
,
'011'
,
'1'
],
'TD'
=> [
'235'
,
'15'
,
undef
],
'TF'
=> [
'596'
,
'00'
,
'0'
],
'TG'
=> [
'228'
,
'00'
,
undef
],
'TH'
=> [
'66'
,
'001'
,
'0'
],
'TJ'
=> [
'992'
,
'810'
,
'8'
],
'TK'
=> [
'690'
,
'00'
,
undef
],
'TL'
=> [
'670'
,
'00'
,
undef
],
'TM'
=> [
'993'
,
'810'
,
'8'
],
'TN'
=> [
'216'
,
'00'
,
'0'
],
'TO'
=> [
'676'
,
'00'
,
undef
],
'TR'
=> [
'90'
,
'00'
,
'0'
],
'TT'
=> [
'1'
,
'011'
,
'1'
],
'TV'
=> [
'688'
,
'00'
,
undef
],
'TW'
=> [
'886'
,
'002'
,
undef
],
'TZ'
=> [
'255'
,
'000'
,
'0'
],
'UA'
=> [
'380'
,
'810'
,
'8'
],
'UG'
=> [
'256'
,
'000'
,
'0'
],
'US'
=> [
'1'
,
'011'
,
'1'
],
'UY'
=> [
'598'
,
'00'
,
'0'
],
'UZ'
=> [
'998'
,
'810'
,
'8'
],
'VA'
=> [
'379'
,
'00'
,
undef
],
'VC'
=> [
'1'
,
'011'
,
'1'
],
'VE'
=> [
'58'
,
'00'
,
'0'
],
'VG'
=> [
'1'
,
'011'
,
'1'
],
'VI'
=> [
'1'
,
'011'
,
'1'
],
'VN'
=> [
'84'
,
'00'
,
'0'
],
'VU'
=> [
'678'
,
'00'
,
undef
],
'WF'
=> [
'681'
,
'19'
,
undef
],
'WS'
=> [
'685'
,
'0'
,
'0'
],
'YE'
=> [
'967'
,
'00'
,
'0'
],
'YT'
=> [
'269'
,
'00'
,
undef
],
'ZA'
=> [
'27'
,
'09'
,
'0'
],
'ZM'
=> [
'260'
,
'00'
,
'0'
],
'ZW'
=> [
'263'
,
'110'
,
'0'
],
);
$prefix_codes
{UK} =
$prefix_codes
{GB};
sub
phone2country {
my
(
$phone
) =
@_
;
return
(phone2country_and_idd(
$phone
))[0];
}
sub
phone2country_and_idd {
my
(
$phone
) =
@_
;
$phone
=~ s/[^\d+]//g;
$phone
=
'+1'
.
$phone
unless
(
substr
(
$phone
, 0, 1) =~ /[1+]/);
$phone
=~ s/\D//g;
if
(
$phone
=~ m!^1(\d{3})\d{7}$!) {
if
($1 =~ m!^(
204|226|250|289|
306|
403|416|418|438|450|
506|514|519|
604|613|647|
705|709|778|780|
807|819|867|
902|905
)$!x) {
return
(
'CA'
, 1);
}
elsif
($1 =~ m!^(
201|202|203|205|206|207|208|209|
210|212|213|214|215|216|217|218|219|
224|225|227|228|229|
231|234|239|
240|248|
251|252|253|254|256|
260|262|267|269|270|276|278|281|283|
301|302|303|304|305|307|308|309|
310|312|313|314|315|316|317|318|319|
320|321|323|325|
330|331|334|336|337|339|
341|347|
351|352|
360|361|369|
380|385|386|
401|402|404|405|406|407|408|409|
410|412|413|414|415|417|419|
423|424|425|
430|432|434|435|
440|442|443|445|
464|469|
470|475|478|479|
480|484|
501|502|503|504|505|507|508|509|
510|512|513|515|516|517|518|
520|
530|
540|541|
551|557|559|
561|562|563|564|567|
570|571|573|574|575|
580|585|586|
601|602|603|605|606|607|608|609|
610|612|614|615|616|617|618|619|
620|623|626|627|628|
630|631|636|
641|646|
650|651|657|659|
660|661|662|667|669|
678|679|
682|689|
701|702|703|704|706|707|708|
712|713|714|715|716|717|718|719|
720|724|727|
731|732|734|737|
740|747|
752|754|757|
760|762|763|764|765|769|
770|772|773|774|775|
781|785|786|
801|802|803|804|805|806|808|
810|812|813|814|815|816|817|818|
828|
830|831|832|835|
843|845|847|848|
850|856|857|858|859|
860|862|863|864|865|
870|872|878|
901|903|904|906|907|908|909|
910|912|913|914|915|916|917|918|919|
920|925|928|
931|935|936|937|
940|941|947|949|
951|952|954|956|959|
970|971|972|973|975|978|979|
980|984|985|989
)$!x) {
return
(
'US'
, 1);
}
elsif
($1 eq
'242'
) {
return
(
'BS'
, 1); }
elsif
($1 eq
'246'
) {
return
(
'BB'
, 1); }
elsif
($1 eq
'264'
) {
return
(
'AI'
, 1); }
elsif
($1 eq
'268'
) {
return
(
'AG'
, 1); }
elsif
($1 eq
'284'
) {
return
(
'VG'
, 1); }
elsif
($1 eq
'340'
) {
return
(
'VI'
, 1); }
elsif
($1 eq
'345'
) {
return
(
'KY'
, 1); }
elsif
($1 eq
'441'
) {
return
(
'BM'
, 1); }
elsif
($1 eq
'473'
) {
return
(
'GD'
, 1); }
elsif
($1 eq
'649'
) {
return
(
'TC'
, 1); }
elsif
($1 eq
'664'
) {
return
(
'MS'
, 1); }
elsif
($1 eq
'670'
) {
return
(
'MP'
, 1); }
elsif
($1 eq
'671'
) {
return
(
'GU'
, 1); }
elsif
($1 eq
'684'
) {
return
(
'AS'
, 1); }
elsif
($1 eq
'758'
) {
return
(
'LC'
, 1); }
elsif
($1 eq
'767'
) {
return
(
'DM'
, 1); }
elsif
($1 eq
'784'
) {
return
(
'VC'
, 1); }
elsif
($1 eq
'787'
) {
return
(
'PR'
, 1); }
elsif
($1 eq
'809'
) {
return
(
'DO'
, 1); }
elsif
($1 eq
'829'
) {
return
(
'DO'
, 1); }
elsif
($1 eq
'868'
) {
return
(
'TT'
, 1); }
elsif
($1 eq
'869'
) {
return
(
'KN'
, 1); }
elsif
($1 eq
'876'
) {
return
(
'JM'
, 1); }
elsif
($1 eq
'939'
) {
return
(
'PR'
, 1); }
else
{
return
(
'NANP'
, 1); }
}
elsif
(
$phone
=~ /^7/) {
return
(
'KZ'
, 7)
if
(
$phone
=~ /^7(
300|
310|311|312|313|314|315|316|317|318|
320|321|322|323|324|325|326|327|328|329|
333|336|
570|571|573|574|
700
)/x);
return
(
'RU'
, 7);
}
else
{
my
@retards
=
map
{
substr
(
$phone
, 0,
$_
) }
reverse
1..
length
(
$phone
);
foreach
my
$idd
(
@retards
) {
if
(
exists
$idd_codes
{
$idd
}) {
my
$country
=
$idd_codes
{
$idd
};
if
(
$country
eq
'GB'
&&
$use_uk
) {
$country
=
'UK'
; }
return
(
$country
,
$idd
);
}
}
}
return
;
}
sub
country_code {
my
$country
=
uc
shift
;
my
$data
=
$prefix_codes
{
$country
} or
return
;
return
$$data
[0];
}
sub
idd_code {
my
$country
=
uc
shift
;
my
$data
=
$prefix_codes
{
$country
} or
return
;
return
$$data
[1];
}
sub
ndd_code {
my
$country
=
uc
shift
;
my
$data
=
$prefix_codes
{
$country
} or
return
;
return
$$data
[2];
}
1;