File Coverage

blib/lib/Number/Phone/StubCountry/RU.pm
Criterion Covered Total %
statement 20 20 100.0
branch 3 4 75.0
condition n/a
subroutine 5 5 100.0
pod 1 1 100.0
total 29 30 96.6


line stmt bran cond sub pod time code
1             # automatically generated file, don't edit
2              
3              
4              
5             # Copyright 2023 David Cantrell, derived from data from libphonenumber
6             # http://code.google.com/p/libphonenumber/
7             #
8             # Licensed under the Apache License, Version 2.0 (the "License");
9             # you may not use this file except in compliance with the License.
10             # You may obtain a copy of the License at
11             #
12             # http://www.apache.org/licenses/LICENSE-2.0
13             #
14             # Unless required by applicable law or agreed to in writing, software
15             # distributed under the License is distributed on an "AS IS" BASIS,
16             # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17             # See the License for the specific language governing permissions and
18             # limitations under the License.
19             package Number::Phone::StubCountry::RU;
20 5     5   3237 use base qw(Number::Phone::StubCountry);
  5         15  
  5         584  
21              
22 5     5   37 use strict;
  5         18  
  5         123  
23 5     5   42 use warnings;
  5         23  
  5         131  
24 5     5   36 use utf8;
  5         11  
  5         33  
25             our $VERSION = 1.20230307181422;
26              
27             my $formatters = [
28             {
29             'format' => '$1-$2-$3',
30             'intl_format' => 'NA',
31             'leading_digits' => '[0-79]',
32             'pattern' => '(\\d{3})(\\d{2})(\\d{2})'
33             },
34             {
35             'format' => '$1 $2 $3 $4',
36             'leading_digits' => '
37             7(?:
38             1(?:
39             [0-356]2|
40             4[29]|
41             7|
42             8[27]
43             )|
44             2(?:
45             13[03-69]|
46             62[013-9]
47             )
48             )|
49             72[1-57-9]2
50             ',
51             'national_rule' => '8 ($1)',
52             'pattern' => '(\\d{4})(\\d{2})(\\d{2})(\\d{2})'
53             },
54             {
55             'format' => '$1 $2 $3 $4',
56             'leading_digits' => '
57             7(?:
58             1(?:
59             0(?:
60             [356]|
61             4[023]
62             )|
63             [18]|
64             2(?:
65             3[013-9]|
66             5
67             )|
68             3[45]|
69             43[013-79]|
70             5(?:
71             3[1-8]|
72             4[1-7]|
73             5
74             )|
75             6(?:
76             3[0-35-9]|
77             [4-6]
78             )
79             )|
80             2(?:
81             1(?:
82             3[178]|
83             [45]
84             )|
85             [24-689]|
86             3[35]|
87             7[457]
88             )
89             )|
90             7(?:
91             14|
92             23
93             )4[0-8]|
94             71(?:
95             33|
96             45
97             )[1-79]
98             ',
99             'national_rule' => '8 ($1)',
100             'pattern' => '(\\d{5})(\\d)(\\d{2})(\\d{2})'
101             },
102             {
103             'format' => '$1 $2 $3',
104             'leading_digits' => '7',
105             'national_rule' => '8 ($1)',
106             'pattern' => '(\\d{3})(\\d{3})(\\d{4})'
107             },
108             {
109             'format' => '$1 $2-$3-$4',
110             'leading_digits' => '
111             [349]|
112             8(?:
113             [02-7]|
114             1[1-8]
115             )
116             ',
117             'national_rule' => '8 ($1)',
118             'pattern' => '(\\d{3})(\\d{3})(\\d{2})(\\d{2})'
119             },
120             {
121             'format' => '$1 $2 $3 $4',
122             'leading_digits' => '8',
123             'national_rule' => '8 ($1)',
124             'pattern' => '(\\d{4})(\\d{4})(\\d{3})(\\d{3})'
125             }
126             ];
127              
128             my $validators = {
129             'fixed_line' => '
130             (?:
131             3(?:
132             0[12]|
133             4[1-35-79]|
134             5[1-3]|
135             65|
136             8[1-58]|
137             9[0145]
138             )|
139             4(?:
140             01|
141             1[1356]|
142             2[13467]|
143             7[1-5]|
144             8[1-7]|
145             9[1-689]
146             )|
147             8(?:
148             1[1-8]|
149             2[01]|
150             3[13-6]|
151             4[0-8]|
152             5[15]|
153             6[1-35-79]|
154             7[1-37-9]
155             )
156             )\\d{7}
157             ',
158             'geographic' => '
159             (?:
160             3(?:
161             0[12]|
162             4[1-35-79]|
163             5[1-3]|
164             65|
165             8[1-58]|
166             9[0145]
167             )|
168             4(?:
169             01|
170             1[1356]|
171             2[13467]|
172             7[1-5]|
173             8[1-7]|
174             9[1-689]
175             )|
176             8(?:
177             1[1-8]|
178             2[01]|
179             3[13-6]|
180             4[0-8]|
181             5[15]|
182             6[1-35-79]|
183             7[1-37-9]
184             )
185             )\\d{7}
186             ',
187             'mobile' => '9\\d{9}',
188             'pager' => '',
189             'personal_number' => '808\\d{7}',
190             'specialrate' => '(80[39]\\d{7})',
191             'toll_free' => '
192             8(?:
193             0[04]|
194             108\\d{3}
195             )\\d{7}
196             ',
197             'voip' => ''
198             };
199             my %areanames = ();
200             $areanames{ru} = {"771436", "Тарановский\ р\-н",
201             "77272", "Алма\-Ата",
202             "7390", "Республика\ Хакасия",
203             "7347", "Республика\ Башкортостан",
204             "77142", "Костанай",
205             "7877", "Республика\ Адыгея",
206             "771539", "Кызылжарский\ р\-н",
207             "77274", "Карасайский\ р\-н",
208             "772638", "Шуский\ р\-н",
209             "772637", "Байзакский\ р\-н",
210             "771442", "Федоровский\ р\-н",
211             "772538", "имени\ Турара\ Рыскулова",
212             "772230", "Урджарский\ р\-н",
213             "772537", "Сарыагаш",
214             "771639", "Енбекшилдерский\ р\-н",
215             "771455", "Костанайский\ р\-н",
216             "771434", "Денисовский\ р\-н",
217             "771031", "Шетский\ р\-н",
218             "7424", "Сахалинская\ обл\.",
219             "771347", "Айтекебийский\ р\-н",
220             "771348", "Шалкарский\ р\-н",
221             "772159", "Карагандинская\ область",
222             "771232", "Атырауская\ область",
223             "7844", "Волгоградская\ обл\.",
224             "7818", "Архангельская\ обл\.",
225             "771033", "Шетский\ р\-н",
226             "7384", "Кемеровская\ обл\.",
227             "772138", "Бухар\-Жырауский\ р\-н",
228             "771030", "Жана\-Аркинский\ р\-н",
229             "772137", "Сарань",
230             "7869", "г\.\ Севастополь",
231             "772435", "Жанакорганский\ р\-н",
232             "772252", "Абайский\ р\-н",
233             "771139", "Таскалинский\ р\-н",
234             "7863", "Ростовская\ обл\.",
235             "772436", "Сырдарьинский\ р\-н",
236             "771233", "Курмангазинский\ р\-н",
237             "771231", "Исатайский\ р\-н",
238             "771032", "Каражал",
239             "77242", "Кызылорда",
240             "772251", "Курчатов",
241             "772539", "Казыгурт",
242             "771637", "Коргалжынский\ р\-н",
243             "771638", "Аккольский\ р\-н",
244             "7496", "г\.\ Москва",
245             "7831", "Нижегородская\ обл\.",
246             "771537", "Тимирязевский\ р\-н",
247             "771538", "Кызылжарский\ р\-н",
248             "7495", "Московская\ обл\.",
249             "771230", "Атырауская\ область",
250             "7473", "Воронежская\ обл\.",
251             "772639", "Сарысуский\ р\-н",
252             "7483", "Брянская\ обл\.",
253             "771456", "Качар",
254             "77272983", "Каскелен",
255             "772348", "Кокпектинский\ р\-н",
256             "772347", "Жарминский\ р\-н",
257             "77125", "Атырауская\ область",
258             "771349", "Шалкарский\ р\-н",
259             "771440", "Амангельдинский\ р\-н",
260             "7835", "Чувашская\ Республика\ \-\ Чувашия",
261             "771137", "Чингирлауский\ р\-н",
262             "7491", "Рязанская\ обл\.",
263             "771138", "Казталовский\ р\-н",
264             "7427", "Чукотский\ АО",
265             "771443", "Мендыкаринский\ р\-н",
266             "733", "Байконыр",
267             "771435", "Житикаринский\ р\-н",
268             "771454", "Наурзумский\ р\-н",
269             "7847", "Республика\ Калмыкия",
270             "771441", "Карабалыкский\ р\-н",
271             "7836", "Республика\ Марий\ Эл",
272             "7813", "Ленинградская\ обл\.",
273             "7353", "Оренбургская\ обл\.",
274             "771039", "Приозерск",
275             "772834", "Каратальский\ р\-н",
276             "7879", "Ставропольский\ край",
277             "7349", "Ямало\-Ненецкий\ АО",
278             "772144", "Нуринский\ р\-н",
279             "772343", "Курчумский\ р\-н",
280             "772153", "Абайский\ р\-н",
281             "772341", "Катон\-Карагайский\ р\-н",
282             "771840", "Баянаульский\ р\-н",
283             "772335", "Зыряновск",
284             "772546", "Шолаккорган",
285             "771130", "Зеленовский\ р\-н",
286             "7423", "Приморский\ край",
287             "771133", "Бурлинский\ р\-н",
288             "771334", "Мугалжарский\ р\-н",
289             "771843", "Майский\ р\-н",
290             "77292", "Актау",
291             "771448", "Карасуский\ р\-н",
292             "772632", "Меркенский\ р\-н",
293             "771447", "Карабалыкский\ р\-н",
294             "7817", "Вологодская\ обл\.",
295             "772532", "Абая",
296             "772340", "Зайсанский\ р\-н",
297             "771841", "Актогайский\ р\-н",
298             "7383", "Новосибирская\ обл\.",
299             "771145", "Каратобинский\ р\-н",
300             "7843", "Республика\ Татарстан",
301             "7395", "Иркутская\ обл\.",
302             "772775", "Енбекшиказахский\ р\-н",
303             "771131", "Зеленовский\ р\-н",
304             "772644", "Таласский\ р\-н",
305             "772836", "Ескельдинский\ р\-н",
306             "77132", "Актобе\/Актюбинск",
307             "771342", "Каргалинский\ р\-н",
308             "7878", "Республика\ Карачаево\-Черкесская",
309             "772934", "Жанаозен",
310             "77213", "Темиртау",
311             "7492", "Владимирская\ обл\.",
312             "772146", "Каркаралинск",
313             "771238", "Кзылкогинский\ р\-н",
314             "7867", "Республика\ Северная\ Осетия\ \-\ Алания",
315             "771237", "Жылыойский\ р\-н",
316             "771630", "Боровое",
317             "772239", "Урджарский\ р\-н",
318             "772544", "Шаульдер",
319             "77282", "Талдыкорган",
320             "771336", "Хромтауский\ р\-н",
321             "772132", "Нуринский\ р\-н",
322             "771633", "Ерейментауский\ р\-н",
323             "771531", "Магжана\ Жумабаева\ р\-н",
324             "7391", "Красноярский\ край",
325             "771545", "Жамбылский\ р\-н",
326             "772842", "Кербулакский\ р\-н",
327             "771645", "Степногорск",
328             "771533", "Айыртауский\ р\-н",
329             "771631", "Шортандинский\ р\-н",
330             "772257", "Шульбинск",
331             "7487", "Тульская\ обл\.",
332             "771834", "Успенский\ р\-н",
333             "771646", "Буландинский\ р\-н",
334             "771144", "Казталовский\ р\-н",
335             "772774", "Талгарский\ р\-н",
336             "771343", "Иргизский\ р\-н",
337             "772840", "Кербулакский\ р\-н",
338             "771341", "Хобдинский\ р\-н",
339             "771335", "Шалкарский\ р\-н",
340             "771038", "Сыры\-Шаган",
341             "771546", "Акжарский\ р\-н",
342             "7848", "Самарская\ обл\.",
343             "771037", "Актогайский\ р\-н",
344             "7388", "Республика\ Алтай",
345             "7814", "Республика\ Карелия",
346             "7413", "Магаданская\ обл\.",
347             "772334", "Уланский\ р\-н",
348             "772843", "Лепсы",
349             "771632", "Зерендинский\ р\-н",
350             "771532", "Аккайынский\ р\-н",
351             "772835", "Текели",
352             "772841", "Аксуский\ р\-н",
353             "771449", "Тарановский\ р\-н",
354             "771340", "Хобдинский\ р\-н",
355             "772131", "Абайский\ р\-н",
356             "771644", "Аршалынский\ р\-н",
357             "77232", "Усть\-Каменогорск",
358             "771651", "Целиноградский\ р\-н",
359             "771836", "Щербактинский\ р\-н",
360             "772776", "Енбекшиказахский\ р\-н",
361             "772342", "Катон\-Карагайский\ р\-н",
362             "772237", "Аязог",
363             "771146", "Акжаикский\ р\-н",
364             "772530", "Темирлановка",
365             "7484", "Калужская\ обл\.",
366             "7474", "Липецкая\ обл\.",
367             "771239", "Макатский\ р\-н",
368             "771544", "Жамбылский\ р\-н",
369             "772336", "Риддер",
370             "77182", "Павлодар",
371             "771132", "Теректинский\ р\-н",
372             "772531", "Аксукент",
373             "772633", "Жамбылский\ р\-н",
374             "7343", "Свердловская\ обл",
375             "771842", "Майский\ р\-он",
376             "7873", "Республика\ Ингушетия",
377             "772545", "Икан",
378             "772631", "Турара\ Рыскулова\ р\-н",
379             "772533", "Туркестан",
380             "772935", "Каракиянский\ р\-н",
381             "7486", "Орловская\ обл\.",
382             "772339", "Курчумский\ р\-н",
383             "7811", "Псковская\ обл\.",
384             "7351", "Челябинская\ обл\.",
385             "772256", "Алгабас",
386             "771453", "Аулиекольский\ р\-н",
387             "771043", "Жайрем\ \(поселок\)",
388             "771041", "Актау\,\ Жезказган",
389             "771444", "Узункольский\ р\-н",
390             "77122", "Атырау",
391             "771035", "Улытауский\ р\-н",
392             "771451", "Сарыкольский\ р\-н",
393             "7493", "Ивановская\ обл\.",
394             "771337", "Алгинский\ р\-н",
395             "7475", "Тамбовская\ обл\.",
396             "7485", "Ярославская\ обл\.",
397             "771839", "Лебяжинский\ р\-н",
398             "772431", "Жалагашский\ р\-н",
399             "772779", "Райымбекский\ р\-н",
400             "771149", "Акжаикский\ р\-н",
401             "7865", "Ставропольский\ край",
402             "7866", "Республика\ Кабардино\-Балкарская",
403             "771040", "Жайрем\ \(ГОК\)",
404             "772147", "Каркаралинский\ р\-н",
405             "771236", "Махамбетский\ р\-н",
406             "772148", "Осакаровский\ р\-н",
407             "772433", "Аральский\ р\-н",
408             "736", "Республика\ Крым",
409             "772837", "Алакольский\ р\-н",
410             "772838", "Коксуский\ р\-н",
411             "77145834", "Красногорск",
412             "7471", "Курская\ обл\.",
413             "7481", "Смоленская\ обл\.",
414             "7816", "Новгородская\ обл\.",
415             "7833", "Кировская\ обл\.",
416             "7815", "Мурманская\ обл\.",
417             "771446", "Узункольский\ р\-н",
418             "77245", "Кызылординская\ область",
419             "772547", "Ленгер",
420             "772548", "Шаян",
421             "771649", "Жаксынский\ р\-н",
422             "7842", "Ульяновская\ обл\.",
423             "7382", "Томская\ обл\.",
424             "77187", "Экибастуз",
425             "771234", "Индерский\ р\-н",
426             "772938", "Тупкараганский\ р\-н",
427             "772937", "Каракиянский\ р\-н",
428             "7861", "Краснодарский\ край",
429             "77273", "Алма\-Ата",
430             "771339", "Айтекебийский\ р\-н",
431             "771430", "Аркалык",
432             "7855", "Республика\ Татарстан",
433             "7821", "Республика\ Коми",
434             "77222", "Семипалатинск",
435             "772337", "Серебрянск",
436             "772338", "Уланский\ р\-н",
437             "771445", "Алтынсаринский\ р\-н",
438             "772839", "Саркандский\ р\-н",
439             "771431", "Рудный",
440             "771034", "Улытауский\ р\-н",
441             "772725", "Отеген\-Батыр",
442             "772149", "Осакаровский\ р\-н",
443             "772777", "Райымбекский\ р\-н",
444             "772778", "Уйгурский\ р\-н",
445             "77224", "Эмельтау",
446             "772236", "Бескарагайский\ р\-н",
447             "771147", "Акжаикский\ р\-н",
448             "771433", "Лисаковск",
449             "7872", "Республика\ Дагестан",
450             "7712303", "Тензиз",
451             "7498", "Московская\ обл\.",
452             "771838", "Майский\ р\-он",
453             "7342", "Пермский\ край",
454             "771837", "Аксуский\ р\-н",
455             "771235", "Макатский\ р\-н",
456             "7301", "Республика\ Бурятия",
457             "77102", "Жезказган",
458             "771042", "Акой",
459             "771452", "Карасуский\ р\-н",
460             "7851", "Астраханская\ обл\.",
461             "772752", "Илийский\ р\-н",
462             "771547", "Жамбылский\ р\-н",
463             "771036", "Балхаш",
464             "7394", "Республика\ Тыва",
465             "7499", "г\.\ Москва",
466             "771648", "Жаркаинский\ р\-н",
467             "772432", "Шиелийский\ р\-н",
468             "771647", "Есильский\ р\-н",
469             "771640", "Сандыктауский\ р\-н",
470             "77149", "Костанай",
471             "7415", "Камчатский\ край",
472             "772534", "Жетысай",
473             "772634", "Жанатас",
474             "7871", "Республика\ Чеченская",
475             "7416", "Амурская\ обл\.",
476             "7341", "Республика\ Удмуртская",
477             "771332", "Уилский\ р\-н",
478             "771540", "Уалихановский\ р\-н",
479             "77185", "Шалдай",
480             "771635", "Жаксынский\ р\-н",
481             "771641", "Астраханский\ р\-н",
482             "771543", "Есильский\ р\-н",
483             "77279", "Алматы",
484             "7834", "Республика\ Мордовия",
485             "771346", "Темирский\ р\-н",
486             "77272956", "Талгар",
487             "771541", "Мамлютский\ р\-н",
488             "77212", "Караганда",
489             "771643", "Атбасарский\ р\-н",
490             "772832", "Аксуский\ р\-н",
491             "771535", "Габита\ Мусрепова\ р\-н",
492             "7345", "Тюменская\ обл\.",
493             "772331", "Глубоковский\ р\-н",
494             "772345", "Жарминский\ р\-н",
495             "771140", "Бокейординский\ р\-н",
496             "7712302", "Тенгизшевройл",
497             "772536", "Кентау",
498             "772770", "Жамбылский\ р\-н",
499             "771459", "Костанайская\ область",
500             "772636", "Кордай",
501             "7411", "Республика\ Саха\ \/Якутия\/",
502             "7346", "Ханты\ \-\ Мансийский\ \-\ Югра\ АО",
503             "772333", "Кокпектинский\ р\-н",
504             "772542", "Асыката",
505             "771845", "Павлодар",
506             "771831", "Железинский\ р\-н",
507             "772439", "Аральский\ р\-н",
508             "772330", "Зыряновский\ р\-н",
509             "772771", "Карасайский\ р\-н",
510             "771135", "Жанибекский\ р\-н",
511             "7302", "Забайкальский\ край",
512             "771141", "Жангалинский\ р\-н",
513             "77252", "Шымкент",
514             "771143", "Теректинский\ р\-н",
515             "77262", "Тараз",
516             "772773", "Балхашский\ р\-н",
517             "772932", "Бейнеуский\ р\-н",
518             "771833", "Качирский\ р\-н",
519             "772759", "Алматинская\ область",
520             "771437", "Камыстинский\ р\-н",
521             "772642", "Мойынкумский\ р\-н",
522             "7717", "Астана",
523             "7494", "Костромская\ обл\.",
524             "771438", "Амангельдинский\ р\-н",
525             "772640", "Мойынкумский\ р\-н",
526             "77135", "Актюбинская\ область",
527             "7846", "Самарская\ обл\.",
528             "771534", "Шал\ Акына\ р\-н",
529             "7385", "Алтайский\ край",
530             "7845", "Саратовская\ обл\.",
531             "7426", "Еврейская\ автономная\ обл\.",
532             "772332", "Шемонаихинский\ р\-н",
533             "772540", "Арыс",
534             "771136", "Акжаикский\ р\-н",
535             "772635", "Жуалынский\ р\-н",
536             "772543", "Аксумбе",
537             "772641", "Таласский\ р\-н",
538             "772156", "Шахтинск",
539             "772931", "Мангистауский\ р\-н",
540             "7812", "г\.\ Санкт\-Петербург",
541             "7352", "Курганская\ обл\.",
542             "772772", "Капчагай",
543             "772346", "Тарбагатайский\ р\-н",
544             "771142", "Акжаикский\ р\-н",
545             "77112", "Уральск",
546             "772643", "Шуский\ р\-н",
547             "772541", "Мырзакент",
548             "772535", "Шардара",
549             "771832", "Иртышский\ р\-н",
550             "7841", "Пензенская\ обл\.",
551             "772830", "Алакольский\ р\-н",
552             "771331", "Мартукский\ р\-н",
553             "7381", "Омская\ обл\.",
554             "771345", "Байганинский\ р\-н",
555             "771536", "Тайыншинский\ р\-н",
556             "771458", "Костанайская\ область",
557             "771457", "Джангильдинский\ р\-н",
558             "771844", "Иртышский\ р\-н",
559             "7862", "Краснодарский\ край",
560             "771636", "Щучинский\ р\-н",
561             "771134", "Сырымский\ р\-н",
562             "740", "Калининградская\ обл\.",
563             "771333", "Мугалжарский\ р\-н",
564             "7421", "Хабаровский\ край",
565             "7472", "Белгородская\ обл\.",
566             "772757", "Акший",
567             "7482", "Тверская\ обл\.",
568             "771542", "Уалихановский\ р\-н",
569             "771330", "Хромтауский\ р\-н",
570             "771439", "Джангильдинский\ р\-н",
571             "772831", "Панфиловский\ р\-н",
572             "772154", "Бухар\-Жырауский\ р\-н",
573             "77152", "Петропавловск",
574             "772353", "Бородулихинский\ р\-н",
575             "77162", "Кокшетау",
576             "772351", "Бородулихинский\ р\-н",
577             "77106", "Сатпаев",
578             "772344", "Тарбагатайский\ р\-н",
579             "7820", "Вологодская\ обл\.",
580             "772833", "Алакольский\ р\-н",
581             "772438", "Казалинский\ р\-н",
582             "772437", "Кармакшинский\ р\-н",
583             "771642", "Егиндыкольский\ р\-н",};
584             $areanames{en} = {"771337", "Alga",
585             "7485", "Yaroslavl",
586             "7475", "Tambov",
587             "771444", "Uzunkol",
588             "77122", "Atyrau",
589             "771041", "Aktau\,\ Zhezkazgan",
590             "771451", "Sarykol",
591             "771035", "Ulytau",
592             "771453", "Auliekol",
593             "771043", "Zhairem",
594             "7486", "Orel",
595             "772339", "Kurchum",
596             "7351", "Chelyabinsk",
597             "7811", "Pskov",
598             "772256", "Kainar",
599             "772433", "Aralsk",
600             "736", "Simferopol",
601             "772837", "Kabanbai",
602             "772838", "Balpyk\ bi",
603             "7866", "Kabardino\-Balkarian\ Republic",
604             "771040", "Zhairem\ \(GOK\)",
605             "772147", "Egindybulak",
606             "771236", "Makhambet",
607             "772148", "Molodezhnoye",
608             "772779", "Narynkol",
609             "771149", "Zelenovsky\ District",
610             "7865", "Stavropol\ territory",
611             "772431", "Zhalagash",
612             "771839", "Akku",
613             "7815", "Murmansk",
614             "771446", "Uzunkolsky\ District",
615             "77145834", "Krasnogorsk",
616             "7481", "Smolensk",
617             "7471", "Kursk",
618             "7816", "Veliky\ Novgorod",
619             "7833", "Kirov",
620             "7861", "Krasnodar\ Territory",
621             "77273", "Almaty",
622             "77187", "Ekibastuz",
623             "771234", "Indernborski",
624             "772938", "Fort\ Shevchenko",
625             "772937", "Kuryk",
626             "7842", "Ulyanovsk",
627             "7382", "Tomsk",
628             "772547", "Lenger",
629             "77245", "Kyzylorda\ Region",
630             "772548", "Shayan",
631             "771649", "Zhaksynsky\ District",
632             "772337", "Serebryansk",
633             "772338", "Bozanbai\/Molodezhnyi",
634             "77222", "Semey",
635             "771430", "Arkalyk",
636             "771339", "Komsomolskoye",
637             "7855", "Naberezhnye\ Chelny",
638             "7821", "Komi\ Republic",
639             "7872", "Republic\ of\ Daghestan",
640             "771433", "Lisakovsk",
641             "7712303", "Tengizs",
642             "771838", "Koktobe",
643             "7498", "Moscow",
644             "771837", "Aksu",
645             "7342", "Perm",
646             "772777", "Kegen",
647             "77224", "Barshatas",
648             "772778", "Chundzha",
649             "772236", "Beskaragai",
650             "771147", "Akzhaiksky\ District",
651             "772725", "Otegen\ Batyra",
652             "772149", "Osakarovka",
653             "771445", "Ubaganskoye",
654             "771034", "Zhezdy",
655             "772839", "Sarkand",
656             "771431", "Rudny",
657             "7851", "Astrakhan",
658             "771042", "Zharyk",
659             "771452", "Karasu",
660             "7301", "Republic\ of\ Buryatia",
661             "771235", "Dossor",
662             "77102", "Zhezkazgan",
663             "771648", "Derzhavinsk",
664             "771647", "Esil",
665             "772432", "Shiyeli",
666             "7394", "Republic\ of\ Tuva",
667             "7499", "Moscow",
668             "772752", "Otegen\ Batyra",
669             "771036", "Balkhash",
670             "771547", "Zhambylsky\ District",
671             "771332", "Uil",
672             "771540", "Kishkenekol",
673             "7871", "Chechen\ Republic",
674             "772634", "Zhanatas",
675             "7416", "Amur\ Region",
676             "7341", "Udmurtian\ Republic",
677             "7415", "Kamchatka\ Region",
678             "772534", "Zhetysai",
679             "771640", "Balkashino",
680             "77149", "Kostanai",
681             "771541", "Mamlutka",
682             "77272956", "Talgar",
683             "771643", "Atbasar",
684             "77212", "Karaganda",
685             "772832", "Zhansugurov",
686             "771535", "Novoishimski",
687             "771346", "Shubarkuduk",
688             "7834", "Republic\ of\ Mordovia",
689             "77279", "Almaty",
690             "77185", "Shaldai",
691             "771635", "Zhaksy",
692             "771641", "Astrakhanka",
693             "771543", "Yavlenka",
694             "7411", "Republic\ of\ Sakha",
695             "7346", "Surgut",
696             "772333", "Samarskoye",
697             "771459", "Kostanai\ Region",
698             "772636", "Kordai",
699             "772536", "Kentau",
700             "7712302", "Tengizshevroil",
701             "771140", "Saikhin",
702             "772770", "Uzynagash",
703             "7345", "Tyumen",
704             "772331", "Glubokoye",
705             "772345", "Shar",
706             "772759", "Almaty\ Region",
707             "771833", "Terenkol",
708             "772642", "Moiynkum",
709             "771437", "Kamysty",
710             "7494", "Kostroma",
711             "771438", "Amangeldy",
712             "7717", "Astana",
713             "771143", "Akzhaik",
714             "77262", "Taraz",
715             "772773", "Bakanas",
716             "772932", "Beineu",
717             "7302", "Chita",
718             "771135", "Zhanibek",
719             "772771", "Kaskelen",
720             "771141", "Zhangala",
721             "77252", "Shymkent",
722             "772542", "Asykata",
723             "771845", "Pavlodar\ Area",
724             "772439", "Aralsky\ District",
725             "771831", "Zhelezinka",
726             "772330", "Zyryanovsky\ District",
727             "772332", "Shemonaikha",
728             "771136", "Chapayev",
729             "772540", "Arys",
730             "7385", "Altai\ Territory",
731             "7845", "Saratov",
732             "7426", "Jewish\ Autonomous\ Region",
733             "7846", "Samara",
734             "771534", "Sergeyevka",
735             "772640", "Moiynkumsky\ District",
736             "77135", "Aktobe\ Region",
737             "77112", "Uralsk",
738             "772643", "Shu",
739             "772541", "Myrzakent",
740             "772535", "Shardara",
741             "771832", "Irtyshsk",
742             "772772", "Kapchagai",
743             "772346", "Aksuat",
744             "771142", "Taipak",
745             "772931", "Shetpe",
746             "772156", "Shakhtinsk",
747             "7352", "Kurgan",
748             "7812", "St\ Petersburg",
749             "772635", "Bauyrzhan\ Mamyshuly",
750             "772543", "Aqsumbe",
751             "772641", "Akkol",
752             "740", "Kaliningrad",
753             "771134", "Zhympity",
754             "7421", "Khabarovsk\ Territory",
755             "771333", "Kandyagash",
756             "7862", "Sochi",
757             "771844", "Irtyshsky\ District",
758             "771636", "Shuchinsk",
759             "771536", "Taiynsha",
760             "771458", "Kostanai\ Region",
761             "771457", "Dzhangildinsky\ District",
762             "771331", "Martuk",
763             "772830", "Alakolsky\ District",
764             "7841", "Penza",
765             "771345", "Karauylkeldy",
766             "7381", "Omsk",
767             "772833", "Usharal",
768             "7820", "Cherepovets",
769             "772438", "Aiteke\ bi",
770             "771642", "Egendykol",
771             "772437", "Zhosaly",
772             "77106", "Satpaev",
773             "772351", "Borodulikha",
774             "77162", "Kokshetau\/Krasni\ Yar",
775             "772344", "Akzhar",
776             "772154", "Botakara",
777             "77152", "Petropavlovsk",
778             "772353", "Novaya\ Shulba",
779             "7482", "Tver",
780             "7472", "Belgorod",
781             "772757", "Akshi",
782             "771542", "Kishkenekol",
783             "771330", "Khromtau\ District",
784             "772831", "Zharkent",
785             "771439", "Torgai",
786             "7390", "Republic\ of\ Khakassia",
787             "77272", "Almaty",
788             "771436", "Taranovskoye",
789             "772230", "Urdzhar",
790             "772538", "Turara\ Ryskulova",
791             "772537", "Saryagash",
792             "771639", "Stepnyak",
793             "771539", "Beskol",
794             "77274", "Karassaisky\ District",
795             "772638", "Tole\ bi",
796             "771442", "Fyodorovka",
797             "772637", "Sarykemer",
798             "7347", "Republic\ of\ Bashkortostan",
799             "77142", "Kostanai",
800             "7877", "Republic\ of\ Adygeya",
801             "7844", "Volgograd",
802             "7384", "Kemerovo",
803             "771033", "Agadyr",
804             "7818", "Arkhangelsk",
805             "771347", "Aitekebisky\ District",
806             "771348", "Shalkarsky\ District",
807             "771232", "Atyrau\ Region",
808             "772159", "Karaganda\ Region",
809             "771031", "Aksu\-Ayuly",
810             "771455", "Zatobolsk",
811             "771434", "Denisovka",
812             "7424", "Sakhalin\ Region",
813             "772252", "Karaul",
814             "771139", "Taskala",
815             "772435", "Zhanakorgan",
816             "7869", "Sevastopol",
817             "772138", "Gabidena\ Mustafina",
818             "771030", "Atasu",
819             "772137", "Saran",
820             "771032", "Karazhal",
821             "771231", "Akkystau",
822             "771233", "Ganyushkino",
823             "7863", "Rostov",
824             "772436", "Terenozek",
825             "771537", "Timiryazevo",
826             "7831", "Nizhni\ Novgorod",
827             "771230", "Atyrau\ Region",
828             "7495", "Moscow",
829             "771538", "Beskol",
830             "772639", "Saudakent",
831             "7483", "Bryansk",
832             "7473", "Voronezh",
833             "771456", "Kachar",
834             "772539", "Kazygurt",
835             "771637", "Korgalzhyn",
836             "7496", "Moscow",
837             "771638", "Akkol",
838             "77242", "Kyzylorda",
839             "772251", "Kurchatov",
840             "77125", "Atyrau\ Region",
841             "771440", "Amangeldy",
842             "771349", "Shalkarsky\ District",
843             "772348", "Kokpekty",
844             "772347", "Kalbatau",
845             "77272983", "Kaskelen",
846             "7836", "Republic\ of\ Marij\ El",
847             "7353", "Orenburg",
848             "7813", "Leningrad\ region",
849             "733", "Baikonur",
850             "771454", "Karamendy",
851             "771435", "Zhitikara",
852             "771441", "Karabalyk",
853             "7847", "Republic\ of\ Kalmykia",
854             "7427", "Chukotka\ Autonomous\ District",
855             "771443", "Borovskoi",
856             "771137", "Chingirlau",
857             "7835", "Chuvashi\ Republic",
858             "7491", "Ryazan",
859             "771138", "Zhalpaktal",
860             "771130", "Peremetnoye",
861             "772546", "Sholakkorgan",
862             "772341", "Ulken\ Naryn",
863             "771840", "Bayanaul",
864             "772153", "Topar",
865             "772335", "Zyryanovsk",
866             "772144", "Kiyevka",
867             "772343", "Terekty",
868             "772834", "Ushtobe",
869             "771039", "Priozersk",
870             "7879", "Mineranye\ Vody",
871             "7349", "Yamalo\-Nenets\ Autonomous\ District",
872             "771145", "Karatobe\ District",
873             "7383", "Novosibirsk",
874             "772775", "Esik",
875             "7395", "Irkutsk",
876             "771131", "Darinskoye",
877             "7843", "Republic\ of\ Tatarstan",
878             "7817", "Vologda",
879             "772532", "Abai",
880             "771841", "Aktogai",
881             "772340", "Zaisan",
882             "771843", "Maisky\ District",
883             "77292", "Aktau",
884             "771448", "Oktyabrskoye",
885             "771447", "Karabalyksky\ District",
886             "772632", "Merke",
887             "771133", "Aksai",
888             "7423", "Primorie\ territory",
889             "771334", "Emba",
890             "772544", "Shaulder",
891             "771630", "Burabay",
892             "772239", "Makanchi",
893             "7878", "Karachayevo\-Cherkessian\ Republic",
894             "771342", "Badamsha",
895             "772934", "Zhanaozen",
896             "77213", "Aktau\/Temirtau",
897             "771238", "Miyaly",
898             "772146", "Karkaralinsk",
899             "7492", "Vladimir",
900             "7867", "Republic\ of\ North\ Ossetia",
901             "771237", "Kulsary",
902             "772644", "Karatau",
903             "772836", "Karabulak",
904             "77132", "Aktobe\/Kargalinskoye",
905             "7487", "Tula",
906             "772257", "Shulbinsk",
907             "771645", "Stepnogorsk",
908             "771533", "Saumalkol",
909             "771631", "Shortandy",
910             "771633", "Ereimentau",
911             "771531", "Bulayevo",
912             "7391", "Krasnoyarsk\ Territory",
913             "771545", "Zhambylsky\ District",
914             "772842", "Kogaly",
915             "77282", "Taldykorgan",
916             "771336", "Khromtau",
917             "772132", "Nurinsky\ District",
918             "771038", "Shashubai",
919             "771037", "Aktogai",
920             "7848", "Tolyatti",
921             "771546", "Talshik",
922             "7814", "Republic\ of\ Karelia",
923             "7388", "Republic\ of\ Altai",
924             "772840", "Saryozek",
925             "771341", "Khobda",
926             "771335", "Shalkar",
927             "771144", "Kaztalovka",
928             "771343", "Irgiz",
929             "772774", "Talgar",
930             "771834", "Uspenka",
931             "771646", "Makinsk",
932             "772131", "Abai",
933             "771532", "Smirnovo",
934             "772835", "Tekeli",
935             "771340", "Khobdinsky\ District",
936             "772841", "Kapal",
937             "771449", "Taranovskoye",
938             "772843", "Lepsy",
939             "771632", "Zerenda",
940             "7413", "Magadan",
941             "772334", "Tavricheskoye",
942             "771544", "Presnovka",
943             "7474", "Lipetsk",
944             "7484", "Kaluga",
945             "771239", "Makat",
946             "772776", "Shelek",
947             "772342", "Katon\-Karagai",
948             "772237", "Ayagoz",
949             "772530", "Temirlanovka",
950             "771146", "Akzhaiksky\ District",
951             "771644", "Arshaly",
952             "771651", "Kabanbai\ Batyr",
953             "77232", "Ust\-Kamenogorsk",
954             "771836", "Sharbakty",
955             "772935", "Zhetybai",
956             "772631", "Kulan",
957             "772533", "Turkestan",
958             "772531", "Aksukent",
959             "7343", "Ekaterinburg",
960             "772633", "Asa",
961             "7873", "Ingushi\ Republic",
962             "771842", "Koktobe",
963             "772545", "Ikan",
964             "772336", "Ridder",
965             "77182", "Pavlodar",
966             "771132", "Fyodorovka",};
967              
968             sub new {
969 59     59 1 136 my $class = shift;
970 59         106 my $number = shift;
971 59         375 $number =~ s/(^\+7|\D)//g;
972 59         308 my $self = bless({ country_code => '7', number => $number, formatters => $formatters, validators => $validators, areanames => \%areanames}, $class);
973 59 100       312 return $self if ($self->is_valid());
974 3         11 $number =~ s/^(?:8)//;
975 3         32 $self = bless({ country_code => '7', number => $number, formatters => $formatters, validators => $validators, areanames => \%areanames}, $class);
976 3 50       15 return $self->is_valid() ? $self : undef;
977             }
978             1;