The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
# automatically generated file, don't edit



# Copyright 2011 David Cantrell, derived from data from libphonenumber
# http://code.google.com/p/libphonenumber/
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
package Number::Phone::StubCountry::MX;
use base qw(Number::Phone::StubCountry);

use strict;
use warnings;
use utf8;
our $VERSION = 1.20170908113148;

my $formatters = [
                {
                  'pattern' => '([358]\\d)(\\d{4})(\\d{4})',
                  'leading_digits' => '
            33|
            55|
            81
          '
                },
                {
                  'pattern' => '(\\d{3})(\\d{3})(\\d{4})',
                  'leading_digits' => '
            [2467]|
            3[0-2457-9]|
            5[089]|
            8[02-9]|
            9[0-35-9]
          '
                },
                {
                  'pattern' => '(1)([358]\\d)(\\d{4})(\\d{4})',
                  'leading_digits' => '
            1(?:
              33|
              55|
              81
            )
          '
                },
                {
                  'pattern' => '(1)(\\d{3})(\\d{3})(\\d{4})',
                  'leading_digits' => '
            1(?:
              [2467]|
              3[0-2457-9]|
              5[089]|
              8[2-9]|
              9[1-35-9]
            )
          '
                }
              ];

my $validators = {
                'pager' => '',
                'personal_number' => '500\\d{7}',
                'geographic' => '
          (?:
            33|
            55|
            81
          )\\d{8}|
          (?:
            2(?:
              0[01]|
              2[1-9]|
              3[1-35-8]|
              4[13-9]|
              7[1-689]|
              8[1-578]|
              9[467]
            )|
            3(?:
              1[1-79]|
              [2458][1-9]|
              7[1-8]|
              9[1-5]
            )|
            4(?:
              1[1-57-9]|
              [24-6][1-9]|
              [37][1-8]|
              8[1-35-9]|
              9[2-689]
            )|
            5(?:
              88|
              9[1-79]
            )|
            6(?:
              1[2-68]|
              [234][1-9]|
              5[1-3689]|
              6[12457-9]|
              7[1-7]|
              8[67]|
              9[4-8]
            )|
            7(?:
              [13467][1-9]|
              2[1-8]|
              5[13-9]|
              8[1-69]|
              9[17]
            )|
            8(?:
              2[13-689]|
              3[1-6]|
              4[124-6]|
              6[1246-9]|
              7[1-378]|
              9[12479]
            )|
            9(?:
              1[346-9]|
              2[1-4]|
              3[2-46-8]|
              5[1348]|
              [69][1-9]|
              7[12]|
              8[1-8]
            )
          )\\d{7}
        ',
                'voip' => '',
                'fixed_line' => '
          (?:
            33|
            55|
            81
          )\\d{8}|
          (?:
            2(?:
              0[01]|
              2[1-9]|
              3[1-35-8]|
              4[13-9]|
              7[1-689]|
              8[1-578]|
              9[467]
            )|
            3(?:
              1[1-79]|
              [2458][1-9]|
              7[1-8]|
              9[1-5]
            )|
            4(?:
              1[1-57-9]|
              [24-6][1-9]|
              [37][1-8]|
              8[1-35-9]|
              9[2-689]
            )|
            5(?:
              88|
              9[1-79]
            )|
            6(?:
              1[2-68]|
              [234][1-9]|
              5[1-3689]|
              6[12457-9]|
              7[1-7]|
              8[67]|
              9[4-8]
            )|
            7(?:
              [13467][1-9]|
              2[1-8]|
              5[13-9]|
              8[1-69]|
              9[17]
            )|
            8(?:
              2[13-689]|
              3[1-6]|
              4[124-6]|
              6[1246-9]|
              7[1-378]|
              9[12479]
            )|
            9(?:
              1[346-9]|
              2[1-4]|
              3[2-46-8]|
              5[1348]|
              [69][1-9]|
              7[12]|
              8[1-8]
            )
          )\\d{7}
        ',
                'specialrate' => '(300\\d{7})|(900\\d{7})',
                'mobile' => '
          1(?:
            (?:
              33|
              55|
              81
            )\\d{8}|
            (?:
              2(?:
                2[1-9]|
                3[1-35-8]|
                4[13-9]|
                7[1-689]|
                8[1-578]|
                9[467]
              )|
              3(?:
                1[1-79]|
                [2458][1-9]|
                7[1-8]|
                9[1-5]
              )|
              4(?:
                1[1-57-9]|
                [24-6][1-9]|
                [37][1-8]|
                8[1-35-9]|
                9[2-689]
              )|
              5(?:
                88|
                9[1-79]
              )|
              6(?:
                1[2-68]|
                [2-4][1-9]|
                5[1-3689]|
                6[12457-9]|
                7[1-7]|
                8[67]|
                9[4-8]
              )|
              7(?:
                [13467][1-9]|
                2[1-8]|
                5[13-9]|
                8[1-69]|
                9[17]
              )|
              8(?:
                2[13-689]|
                3[1-6]|
                4[124-6]|
                6[1246-9]|
                7[1-378]|
                9[12479]
              )|
              9(?:
                1[346-9]|
                2[1-4]|
                3[2-46-8]|
                5[1348]|
                [69][1-9]|
                7[12]|
                8[1-8]
              )
            )\\d{7}
          )
        ',
                'toll_free' => '
          8(?:
            00|
            88
          )\\d{7}
        '
              };
my %areanames = (
  52221 => "Puebla",
  52222 => "Puebla",
  52223 => "Puebla",
  52224 => "Puebla",
  52225 => "Tlapacoyan\,\ VER",
  52226 => "Altotonga\/Jalacingo\,\ VER",
  52227 => "Huejotzingo\/San\ Buenaventura\ Nealtican\,\ PUE",
  52228 => "Jalapa\/Tuzamapan\,\ VER",
  52229 => "Veracruz\,\ VER",
  52231 => "Teteles\/Teziutlan\,\ PUE",
  52232 => "La\ Vigueta\/Martinez\ de\ la\ Torre\,\ VER",
  52233 => "Puebla",
  52235 => "Veracruz",
  52236 => "Oaxaca\/Puebla",
  52237 => "Puebla",
  52238 => "Santiago\ Miahuatlan\/Tehuacan\,\ PUE",
  52241 => "Tlaxcala",
  52243 => "Puebla",
  52244 => "Puebla",
  52245 => "Puebla",
  52246 => "Tlaxcala",
  52247 => "Huamantla\/San\ Cosme\ Xalostoc\,\ TLAX",
  52248 => "Puebla",
  52249 => "Puebla",
  52271 => "Veracruz",
  52272 => "Maltrata\/Orizaba\,\ VER",
  52273 => "Veracruz",
  52274 => "Oaxaca",
  52275 => "Puebla",
  52276 => "Puebla",
  52278 => "Veracruz",
  52279 => "Veracruz",
  52281 => "Loma\ Bonita\,\ OAX",
  52282 => "Puebla\/Veracruz",
  52283 => "Veracruz",
  52284 => "Angel\ Rosario\ Cabada\/Lerdo\ de\ Tejada\,\ VER",
  52285 => "Veracruz",
  52287 => "Oaxaca",
  52288 => "Veracruz",
  52294 => "Veracruz",
  52296 => "Veracruz",
  52297 => "Alvarado\,\ VER",
  52311 => "Nayarit",
  52312 => "Colima\/Los\ Tepames\,\ COL",
  52313 => "Colima",
  52314 => "Manzanillo\/Pena\ Colorada\,\ COL",
  52315 => "Jalisco",
  52316 => "Jalisco",
  52317 => "Autlan\/El\ Chante\,\ JAL",
  52318 => "Colima\/Jalisco",
  52319 => "Nayarit",
  52321 => "El\ Grullo\/El\ Limon\,\ JAL",
  52322 => "Jalisco",
  52323 => "Nayarit",
  52324 => "Nayarit",
  52325 => "Acaponeta\,\ NAY",
  52326 => "Jalisco",
  52327 => "Nayarit",
  52328 => "Michoacan",
  52329 => "Nayarit",
  5233 => "Guadalajara\,\ JAL",
  52341 => "Ciudad\ Guzman\,\ JAL",
  52342 => "Gomez\ Farias\/Sayula\,\ JAL",
  52343 => "Jalisco",
  52344 => "Mexticacan\/Yahualica\,\ JAL",
  52345 => "Jalisco",
  52346 => "Jalisco\/Zacatecas",
  52347 => "Jalisco",
  52348 => "Jalisco",
  52349 => "Jalisco",
  52351 => "Ario\ de\ Rayon\/Zamora\,\ MICH",
  52352 => "La\ Piedad\,\ MICH",
  52353 => "Michoacan",
  52354 => "Michoacan",
  52355 => "Michoacan",
  52356 => "Tanhuato\/Yurecuaro\,\ MICH",
  52357 => "Jalisco",
  52358 => "Tamazula\/Zapoltitic\,\ JAL",
  52371 => "Jalisco",
  52372 => "Jalisco",
  52373 => "Jalisco",
  52374 => "Jalisco",
  52375 => "Ameca\,\ JAL",
  52376 => "Jalisco",
  52377 => "Cocula\/Estipac\,\ JAL",
  52378 => "Jalisco",
  52379 => "Jalisco\/Michoacan",
  52381 => "Cojumatlan\/San\ Jose\ de\ Gracia\,\ MICH",
  52382 => "Jalisco",
  52383 => "Michoacan",
  52384 => "Tala\/Teuchitlan\,\ JAL",
  52385 => "Jalisco",
  52386 => "Jalisco",
  52387 => "Jalisco",
  52388 => "Jalisco",
  52389 => "Nayarit",
  52391 => "Jalisco",
  52392 => "Jamay\/Ocotlan\,\ JAL",
  52393 => "Jalisco",
  52394 => "Cotija\ de\ la\ Paz\,\ MICH",
  52395 => "Jalisco",
  52411 => "Guanajuato",
  52412 => "Guanajuato",
  52413 => "Apaseo\ el\ Alto\/Apaseo\ el\ Grande\,\ GTO",
  52414 => "Tequisquiapan\,\ QRO",
  52415 => "San\ Miguel\ Allende\,\ GTO",
  52417 => "Guanajuato",
  52418 => "Dolores\ Hidalgo\/San\ Diego\ de\ la\ Union\,\ GTO",
  52419 => "Guanajuato",
  52421 => "Guanajuato",
  52422 => "Michoacan",
  52423 => "Michoacan",
  52424 => "Michoacan",
  52425 => "Michoacan",
  52426 => "Michoacan",
  52427 => "Mexico\/Quintana\ Roo",
  52428 => "Ocampo\/San\ Felipe\,\ GTO",
  52429 => "Guanajuato",
  52431 => "Jalostotitlan\/Villa\ Obregon\,\ JAL",
  52432 => "Ciudad\ Manuel\ Doblado\/Romita\,\ GTO",
  52433 => "Zacatecas",
  52434 => "Michoacan",
  52435 => "Huetamo\/San\ Lucas\,\ MICH",
  52436 => "Zacapu\,\ MICH",
  52437 => "Jalisco\/Zacatecas",
  52438 => "Michoacan",
  52441 => "Queretaro",
  52442 => "Queretaro",
  52443 => "Morelia\/Tarimbaro\,\ MICH",
  52444 => "San\ Luis\ Potosi\,\ SLP",
  52445 => "Moroleon\,\ GTO",
  52447 => "Contepec\/Maravatio\,\ MICH",
  52448 => "Queretaro",
  52449 => "Aguascalientes\/Jesus\ Maria\,\ AGS",
  52451 => "Michoacan",
  52452 => "Nuevo\ San\ Juan\ Parangaricutiro\/Uruapan\,\ MICH",
  52453 => "Apatzingan\,\ MICH",
  52454 => "Michoacan",
  52455 => "Michoacan",
  52456 => "Valle\ de\ Santiago\,\ GTO",
  52457 => "Jalisco\/Zacatecas",
  52458 => "Zacatecas",
  52459 => "Michoacan",
  52461 => "Guanajuato",
  52462 => "Irapuato\,\ GTO",
  52463 => "Jalpa\/Tabasco\,\ ZAC",
  52464 => "Salamanca\,\ GTO",
  52465 => "Aguascalientes",
  52466 => "Guanajuato",
  52467 => "Zacatecas",
  52468 => "San\ Luis\ de\ la\ Paz\,\ GTO",
  52469 => "Buenavista\ de\ Cortez\/Penjamo\,\ GTO",
  52471 => "Purepero\/Tlazazalca\,\ MICH",
  52472 => "Silao\,\ GTO",
  52473 => "Guanajuato\,\ GTO",
  52474 => "Lagos\ de\ Moreno\/Paso\ de\ Cuarenta\,\ JAL",
  52475 => "Bajio\ de\ San\ Jose\/Encarnacion\ de\ Diaz\,\ JAL",
  52476 => "San\ Francisco\ Del\ Rincon\,\ GTO",
  52477 => "Leon\,\ GTO",
  52478 => "Calera\ Victor\ Rosales\,\ ZAC",
  52481 => "Ciudad\ Valles\,\ SLP",
  52482 => "San\ Luis\ Potosi",
  52483 => "San\ Luis\ Potosi",
  52485 => "San\ Luis\ Potosi",
  52486 => "San\ Luis\ Potosi",
  52487 => "San\ Luis\ Potosi",
  52488 => "San\ Luis\ Potosi",
  52489 => "San\ Luis\ Potosi",
  52492 => "Zacatecas",
  52493 => "Fresnillo\,\ ZAC",
  52494 => "Jerez\ de\ Garcia\ Salinas\,\ ZAC",
  52495 => "Aguascalientes\/Jalisco",
  52496 => "Zacatecas",
  52498 => "Zacatecas",
  52499 => "Jalisco\/Zacatecas",
  5255 => "Mexico\ City\,\ FD",
  52586 => "Tlalmanalco\,\ MEX",
  52587 => "Amecameca\,\ MEX",
  52588 => "Estado\ de\ Mexico",
  52589 => "Juchitepec\/Ozumba\,\ MEX",
  52591 => "Estado\ de\ Mexico",
  52592 => "Estado\ de\ Mexico",
  52593 => "Estado\ de\ Mexico",
  52594 => "Estado\ de\ Mexico",
  52595 => "Estado\ de\ Mexico",
  52596 => "Estado\ de\ Mexico",
  52599 => "Estado\ de\ Mexico",
  52612 => "La\ Paz\/Todos\ Santos\,\ BCS",
  52613 => "Baja\ California\ Sur",
  52614 => "Chihuahua",
  52615 => "Baja\ California\ Sur",
  52616 => "Baja\ California",
  52618 => "Colonia\ Hidalgo\/Durango\,\ DGO",
  52621 => "Chihuahua",
  52622 => "Guaymas\/San\ Carlos\,\ SON",
  52623 => "Sonora",
  52624 => "Baja\ California\ Sur",
  52625 => "Chihuahua",
  52626 => "Ojinaga\,\ CHIH",
  52627 => "Parral\,\ CHIH",
  52628 => "Chihuahua",
  52629 => "Chihuahua",
  52631 => "Nogales\,\ SON",
  52632 => "Imuris\/Magdalena\,\ SON",
  52633 => "Sonora",
  52634 => "Sonora",
  52635 => "Chihuahua",
  52636 => "Chihuahua",
  52637 => "Altar\/Caborca\,\ SON",
  52638 => "Puerto\ Penasco\,\ SON",
  52639 => "Chihuahua",
  52641 => "Benjamin\ Hill\/Santa\ Ana\,\ SON",
  52642 => "Navojoa\/Pueblo\ Mayo\,\ SON",
  52643 => "Sonora",
  52644 => "Sonora",
  52645 => "Cananea\,\ SON",
  52646 => "Baja\ California",
  52647 => "Sonora",
  52648 => "Boquilla\/Ciudad\ Camargo\,\ CHIH",
  52649 => "Chihuahua\/Durango",
  52651 => "Sonoita\,\ SON",
  52652 => "Chihuahua",
  52653 => "Luis\ B\.\ Sanchez\/San\ Luis\ Rio\ Colorado\,\ SON",
  52656 => "Chihuahua",
  52658 => "Baja\ California",
  52659 => "Chihuahua",
  52661 => "Primo\ Tapia\/Rosarito\,\ BCN",
  52662 => "Sonora",
  52665 => "Tecate\,\ BCN",
  52666 => "Tijuana\,\ BCN",
  52667 => "Sinoloa",
  52668 => "Sinoloa",
  52669 => "Sinoloa",
  52671 => "Durango",
  52672 => "Sinoloa",
  52673 => "Sinoloa",
  52674 => "Durango",
  52675 => "Durango",
  52676 => "Durango",
  52677 => "Durango",
  52686 => "Baja\ California",
  52687 => "Sinoloa",
  52694 => "Sinoloa",
  52695 => "Sinoloa",
  52696 => "Sinoloa",
  52697 => "Sinoloa",
  52698 => "Sinoloa",
  52711 => "Mexico\/Michoacan",
  52712 => "Estado\ de\ Mexico",
  52713 => "Santiago\ Tianguistenco\,\ MEX",
  52714 => "Estado\ de\ Mexico",
  52715 => "Michoacan",
  52716 => "Estado\ de\ Mexico",
  52717 => "Estado\ de\ Mexico",
  52718 => "Estado\ de\ Mexico",
  52719 => "San\ Francisco\ Xonacatlan\/Temoaya\,\ MEX",
  52721 => "Ixtapan\ de\ la\ Sal\,\ MEX",
  52722 => "Estado\ de\ Mexico",
  52723 => "Coatepec\ Harinas\,\ MEX",
  52724 => "Luvianos\/Tejupilco\ de\ Hidalgo\,\ MEX",
  52725 => "Almoloya\ de\ Juarez\/Santa\ Maria\ Del\ Monte\,\ MEX",
  52726 => "Estado\ de\ Mexico",
  52727 => "Guerrero",
  52728 => "Lerma\/Santa\ Maria\ Atarasquillo\,\ MEX",
  52729 => "Estado\ de\ Mexico",
  52731 => "Morelos",
  52732 => "Guerrero",
  52733 => "Iguala\,\ GRO",
  52734 => "Morelos",
  52735 => "Cuautla\/Jonacatepec\,\ MOR",
  52736 => "Guerrero",
  52737 => "Morelos",
  52738 => "Mixquiahuala\/Tepatepec\,\ HGO",
  52739 => "Huitzilac\/Tepoztlan\,\ MOR",
  52741 => "Guerrero",
  52742 => "Guerrero",
  52743 => "Hidalgo",
  52744 => "Acapulco\/Xaltianguis\,\ GRO",
  52745 => "Guerrero",
  52746 => "Puebla\/Veracruz",
  52747 => "Guerrero",
  52748 => "Hidalgo",
  52749 => "Calpulalpan\,\ TLAX",
  52751 => "Morelos",
  52752 => "Morelos",
  52753 => "Michoacan",
  52754 => "Guerrero",
  52755 => "Ixtapa\/Zihuatanejo\,\ GRO",
  52756 => "Chilapa\/Olinala\,\ GRO",
  52757 => "Huamuxtitlan\/Tlapa\ de\ Comonfort\,\ GRO",
  52758 => "Petatlan\/San\ Jeronimito\,\ GRO",
  52759 => "Hidalgo",
  52761 => "Hidalgo",
  52762 => "Taxco\,\ GRO",
  52763 => "Tezontepec\ de\ Aldama\/Tlahuelilpan\,\ HGO",
  52764 => "Puebla",
  52765 => "Alamo\ Temapache\/Alazan\/Potrero\ Del\ Llano\,\ VER",
  52766 => "Gutierrez\ Zamora\/Tecolutla\,\ VER",
  52767 => "Guerrero",
  52768 => "Veracruz",
  52769 => "Morelos",
  52771 => "Pachuca\/Real\ Del\ Monte\,\ HGO",
  52772 => "Actopan\,\ HGO",
  52773 => "Hidalgo",
  52774 => "Hidalgo",
  52775 => "Tulancingo\,\ HGO",
  52776 => "Puebla",
  52777 => "Morelos",
  52778 => "Hidalgo",
  52779 => "Tizayuca\,\ HGO",
  52781 => "Coyuca\ de\ Benitez\/San\ Jeronimo\ de\ Juarez\,\ GRO",
  52782 => "Poza\ Rica\,\ VER",
  52783 => "Tuxpan\,\ VER",
  52784 => "Veracruz",
  52785 => "Veracruz",
  52786 => "Ciudad\ Hidalgo\/Tuxpan\,\ MICH",
  52789 => "Veracruz",
  52791 => "Ciudad\ Sahagun\,\ HGO",
  52797 => "Puebla",
  5281 => "Monterrey\,\ NL",
  52821 => "Hualahuises\/Linares\,\ NL",
  52823 => "Nuevo\ Leon",
  52824 => "Sabinas\ Hidalgo\,\ NL",
  52825 => "Nuevo\ Leon",
  52826 => "Nuevo\ Leon",
  52827 => "Santiago\,\ NL",
  52828 => "Cadereyta\,\ NL",
  52829 => "Nuevo\ Leon",
  52831 => "Ciudad\ Mante\/Los\ Aztecas\,\ TAMPS",
  52832 => "Tamaulipas",
  52833 => "Tampico\,\ TAMPS",
  52834 => "Ciudad\ Victoria\,\ TAMPS",
  52835 => "Tamaulipas",
  52836 => "Tamaulipas",
  52841 => "Tamaulipas",
  52842 => "Coahuila",
  52844 => "Saltillo\,\ COAH",
  52845 => "Ebano\/Ponciano\ Arriaga\,\ SLP",
  52846 => "Veracruz",
  52861 => "Nueva\ Rosita\/Sabinas\,\ COAH",
  52862 => "Coahuila",
  52864 => "Coahuila",
  52866 => "Castanos\/Monclova\,\ COAH",
  52867 => "Nuevo\ Leon\/Tamaulipas",
  52868 => "Tamaulipas",
  52869 => "Cuatro\ Cienegas\/San\ Buenaventura\,\ COAH",
  52871 => "Coahuila",
  52872 => "Coahuila\/Durango",
  52873 => "Nuevo\ Leon",
  52877 => "Ciudad\ Acuna\,\ COAH",
  52878 => "Piedras\ Negras\,\ COAH",
  52891 => "Tamaulipas",
  52892 => "Nuevo\ Leon",
  52894 => "Santa\ Apolonia\/Valle\ Hermoso\,\ TAMPS",
  52897 => "Tamaulipas",
  52899 => "Tamaulipas",
  52913 => "Tabasco",
  52914 => "Tabasco",
  52916 => "Chiapas",
  52917 => "Tabasco",
  52918 => "Chiapas",
  52919 => "Chiapas",
  52921 => "Coatzacoalcos\/Ixhuatlan\ Del\ Sureste\,\ VER",
  52922 => "Veracruz",
  52923 => "Tabasco\/Veracruz",
  52924 => "Veracruz",
  52932 => "Chiapas\/Tabasco",
  52933 => "Tabasco",
  52934 => "Tabasco",
  52936 => "Tabasco",
  52937 => "Cardenas\,\ TAB",
  52938 => "Ciudad\ Del\ Carmen\,\ CAMP",
  5295 => "Oaxaca",
  52961 => "Chiapas",
  52962 => "Chiapas",
  52963 => "Chiapas",
  52964 => "Chiapas",
  52965 => "Chiapas",
  52966 => "Arriaga\/Tonala\,\ CHIS",
  52967 => "San\ Cristobal\ de\ las\ Casas\,\ CHIS",
  52968 => "Chiapas",
  52969 => "Flamboyanes\/Yucalpeten\,\ YUC",
  5297 => "Oaxaca",
  52981 => "Campeche\,\ CAMP",
  52982 => "Campeche",
  52983 => "Quintana\ Roo",
  52984 => "Quintana\ Roo",
  52985 => "Yucatan",
  52986 => "Yucatan",
  52987 => "Cozumel\,\ QRO",
  52988 => "Yucatan",
  52991 => "Yucatan",
  52992 => "Chiapas",
  52993 => "Tabasco",
  52994 => "Oaxaca",
  52995 => "Magdalena\ Tequisistlan\/Santa\ Maria\ Jalapa\ Del\ Marquez\,\ OAX",
  52996 => "Campeche",
  52997 => "Yucatan",
  52998 => "Quintana\ Roo",
  52999 => "Conkal\/Merida\,\ YUC",
);
    sub new {
      my $class = shift;
      my $number = shift;
      $number =~ s/(^\+52|\D)//g;
      my $self = bless({ number => $number, formatters => $formatters, validators => $validators, areanames => \%areanames}, $class);
  
      return $self if ($self->is_valid());
      $number =~ s/(^01)//g;
      $self = bless({ number => $number, formatters => $formatters, validators => $validators, areanames => \%areanames}, $class);
    return $self->is_valid() ? $self : undef;
}
1;