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::SE;
use base qw(Number::Phone::StubCountry);

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

my $formatters = [{'leading_digits' => '8','pattern' => '(8)(\\d{2,3})(\\d{2,3})(\\d{2})'},{'leading_digits' => '1[013689]|2[0136]|3[1356]|4[0246]|54|6[03]|90','pattern' => '([1-69]\\d)(\\d{2,3})(\\d{2})(\\d{2})'},{'pattern' => '([1-69]\\d)(\\d{3})(\\d{2})','leading_digits' => '1[13689]|2[136]|3[1356]|4[0246]|54|6[03]|90'},{'leading_digits' => '1[2457]|2[2457-9]|3[0247-9]|4[1357-9]|5[0-35-9]|6[124-9]|9(?:[125-8]|3[0-5]|4[0-3])','pattern' => '(\\d{3})(\\d{2})(\\d{2})(\\d{2})'},{'leading_digits' => '1[2457]|2[2457-9]|3[0247-9]|4[1357-9]|5[0-35-9]|6[124-9]|9(?:[125-8]|3[0-5]|4[0-3])','pattern' => '(\\d{3})(\\d{2,3})(\\d{2})'},{'leading_digits' => '7','pattern' => '(7\\d)(\\d{3})(\\d{2})(\\d{2})'},{'leading_digits' => '7','pattern' => '(77)(\\d{2})(\\d{2})'},{'pattern' => '(20)(\\d{2,3})(\\d{2})','leading_digits' => '20'},{'leading_digits' => '9[034]','pattern' => '(9[034]\\d)(\\d{2})(\\d{2})(\\d{3})'},{'pattern' => '(9[034]\\d)(\\d{4})','leading_digits' => '9[034]'}];
my $validators = {'pager' => '74[02-9]\\d{6}','mobile' => '7[02369]\\d{7}','specialrate' => '(77(?:0(?:0\\d{2}|[1-9](?:0\\d|[1-9]\\d{4}))|[1-6][1-9]\\d{5}))|(9(?:00|39|44)(?:1(?:[0-26]\\d{5}|[3-57-9]\\d{2})|2(?:[0-2]\\d{5}|[3-9]\\d{2})|3(?:[0139]\\d{5}|[24-8]\\d{2})|4(?:[045]\\d{5}|[1-36-9]\\d{2})|5(?:5\\d{5}|[0-46-9]\\d{2})|6(?:[679]\\d{5}|[0-58]\\d{2})|7(?:[078]\\d{5}|[1-69]\\d{2})|8(?:[578]\\d{5}|[0-469]\\d{2})))','personal_number' => '75[1-8]\\d{6}','geographic' => '1(?:0[1-8]\\d{6}|[136]\\d{5,7}|(?:2[0-35]|4[0-4]|5[0-25-9]|7[13-6]|[89]\\d)\\d{5,6})|2(?:[136]\\d{5,7}|(?:2[0-7]|4[0136-8]|5[0138]|7[018]|8[01]|9[0-57])\\d{5,6})|3(?:[356]\\d{5,7}|(?:0[0-4]|1\\d|2[0-25]|4[056]|7[0-2]|8[0-3]|9[023])\\d{5,6})|4(?:0[1-9]\\d{4,6}|[246]\\d{5,7}|(?:1[013-8]|3[0135]|5[14-79]|7[0-246-9]|8[0156]|9[0-689])\\d{5,6})|5(?:0[0-6]|[15][0-5]|2[0-68]|3[0-4]|4\\d|6[03-5]|7[013]|8[0-79]|9[01])\\d{5,6}|6(?:0[1-9]\\d{4,6}|3\\d{5,7}|(?:1[1-3]|2[0-4]|4[02-57]|5[0-37]|6[0-3]|7[0-2]|8[0247]|9[0-356])\\d{5,6})|8[1-9]\\d{5,7}|9(?:0[1-9]\\d{4,6}|(?:1[0-68]|2\\d|3[02-5]|4[0-3]|5[0-4]|[68][01]|7[0135-8])\\d{5,6})','voip' => '','fixed_line' => '1(?:0[1-8]\\d{6}|[136]\\d{5,7}|(?:2[0-35]|4[0-4]|5[0-25-9]|7[13-6]|[89]\\d)\\d{5,6})|2(?:[136]\\d{5,7}|(?:2[0-7]|4[0136-8]|5[0138]|7[018]|8[01]|9[0-57])\\d{5,6})|3(?:[356]\\d{5,7}|(?:0[0-4]|1\\d|2[0-25]|4[056]|7[0-2]|8[0-3]|9[023])\\d{5,6})|4(?:0[1-9]\\d{4,6}|[246]\\d{5,7}|(?:1[013-8]|3[0135]|5[14-79]|7[0-246-9]|8[0156]|9[0-689])\\d{5,6})|5(?:0[0-6]|[15][0-5]|2[0-68]|3[0-4]|4\\d|6[03-5]|7[013]|8[0-79]|9[01])\\d{5,6}|6(?:0[1-9]\\d{4,6}|3\\d{5,7}|(?:1[1-3]|2[0-4]|4[02-57]|5[0-37]|6[0-3]|7[0-2]|8[0247]|9[0-356])\\d{5,6})|8[1-9]\\d{5,7}|9(?:0[1-9]\\d{4,6}|(?:1[0-68]|2\\d|3[02-5]|4[0-3]|5[0-4]|[68][01]|7[0135-8])\\d{5,6})','toll_free' => '20(?:0(?:0\\d{2}|[1-9](?:0\\d{1,4}|[1-9]\\d{4}))|1(?:0\\d{4}|[1-9]\\d{4,5})|[2-9]\\d{5})'};sub areaname { my $self = shift; my $number = $self->{number}; my %map = (4611 => "Norrköping",46120 => "Åtvidaberg",46121 => "Söderköping",46122 => "Finspång",46123 => "Valdemarsvik",46125 => "Vikbolandet",4613 => "Linköping",46140 => "Tranås",46141 => "Motala",46142 => "Mjölby\-Skänninge\-Boxholm",46143 => "Vadstena",46144 => "Ödeshög",46150 => "Katrineholm",46151 => "Vingåker",46152 => "Strängnäs",46155 => "Nyköping\-Oxelösund",46156 => "Trosa\-Vagnhärad",46157 => "Flen\-Malmköping",46158 => "Gnesta",46159 => "Mariefred",4616 => "Eskilstuna\-Torshälla",46171 => "Enköping",46174 => "Alunda",46175 => "Hallstavik\-Rimbo",46176 => "Norrtälje",4618 => "Uppsala",4619 => "Örebro\-Kumla",4621 => "Västerås",46220 => "Hallstahammar\-Surahammar",46221 => "Köping",46222 => "Skinnskatteberg",46224 => "Sala\-Heby",46225 => "Hedemora\-Säter",46226 => "Avesta\-Krylbo",46227 => "Kungsör",46240 => "Ludvika\-Smedjebacken",46241 => "Gagnef\-Floda",46243 => "Borlänge",46246 => "Svärdsjö\-Enviken",46247 => "Leksand\-Insjön",46248 => "Rättvik",46250 => "Mora\-Orsa",46251 => "Älvdalen",46253 => "Idre\-Särna",4626 => "Gävle\-Sandviken",46270 => "Söderhamn",46271 => "Alfta\-Edsbyn",46278 => "Bollnäs",46280 => "Malung",46281 => "Vansbro",46290 => "Hofors\-Storvik",46291 => "Hedesunda\-Österfärnebo",46292 => "Tärnsjö\-Östervåla",46293 => "Tierp\-Söderfors",46294 => "Karlholmsbruk\-Skärplinge",46295 => "Örbyhus\-Dannemora",46297 => "Ockelbo\-Hamrånge",46300 => "Kungsbacka",46301 => "Hindås",46303 => "Kungälv",4631 => "Gothenburg",46320 => "Kinna",46321 => "Ulricehamn",46322 => "Alingsås\-Vårgårda",46325 => "Svenljunga\-Tranemo",4633 => "Borås",46340 => "Varberg",46345 => "Hyltebruk\-Torup",46346 => "Falkenberg",4635 => "Halmstad",4636 => "Jönköping\-Huskvarna",46370 => "Värnamo",46371 => "Gislaved\-Anderstorp",46372 => "Ljungby",46380 => "Nässjö",46381 => "Eksjö",46382 => "Sävsjö",46383 => "Vetlanda",46390 => "Gränna",46392 => "Mullsjö",46393 => "Vaggeryd",4640 => "Malmö",46410 => "Trelleborg",46411 => "Ystad",46413 => "Eslöv\-Höör",46414 => "Simrishamn",46415 => "Hörby",46416 => "Sjöbo",46417 => "Tomelilla",46418 => "Landskrona\-Svalöv",4642 => "Helsingborg\-Höganäs",46430 => "Laholm",46431 => "Ängelholm\-Båstad",46433 => "Markaryd\-Strömsnäsbruk",46435 => "Klippan\-Perstorp",4644 => "Kristianstad",46451 => "Hässleholm",46454 => "Karlshamn\-Olofström",46455 => "Karlskrona",46456 => "Sölvesborg\-Bromölla",46457 => "Ronneby",46459 => "Ryd",4646 => "Lund",46470 => "Växjö",46471 => "Emmaboda",46472 => "Alvesta\-Rydaholm",46474 => "Åseda\-Lenhovda",46476 => "Älmhult",46477 => "Tingsryd",46478 => "Lessebo",46479 => "Osby",46480 => "Kalmar",46481 => "Nybro",46485 => "Öland",46486 => "Torsås",46490 => "Västervik",46491 => "Oskarshamn\-Högsby",46492 => "Vimmerby",46493 => "Gamleby",46494 => "Kisa",46496 => "Mariannelund",46498 => "Gotland",46499 => "Mönsterås",46500 => "Skövde",46501 => "Mariestad",46502 => "Tidaholm",46503 => "Hjo",46504 => "Tibro",46505 => "Karlsborg",46506 => "Töreboda\-Hova",46510 => "Lidköping",46511 => "Skara\-Götene",46512 => "Vara\-Nossebro",46514 => "Grästorp",46515 => "Falköping",46520 => "Trollhättan",46521 => "Vänersborg",46522 => "Uddevalla",46523 => "Lysekil",46524 => "Munkedal",46525 => "Grebbestad",46526 => "Strömstad",46528 => "Färgelanda",46530 => "Mellerud",46531 => "Bengtsfors",46532 => "Åmål",46533 => "Säffle",46534 => "Ed",4654 => "Karlstad",46550 => "Kristinehamn",46551 => "Gullspång",46552 => "Deje",46553 => "Molkom",46554 => "Kil",46560 => "Torsby",46563 => "Hagfors\-Munkfors",46564 => "Sysslebäck",46565 => "Sunne",46570 => "Arvika",46571 => "Charlottenberg\-Åmotfors",46573 => "Årjäng",46580 => "Kopparberg",46581 => "Lindesberg",46582 => "Hallsberg",46583 => "Askersund",46584 => "Laxå",46585 => "Fjugesta\-Svartå",46587 => "Nora",46589 => "Arboga",46590 => "Filipstad",46591 => "Hällefors\-Grythyttan",4660 => "Sundsval\-Timrå",46611 => "Härnösand",46612 => "Kramfors",46613 => "Ullånger",46620 => "Sollefteå",46621 => "Junsele",46622 => "Näsåker",46623 => "Ramsele",46624 => "Backe",4663 => "Östersund",46640 => "Krokom",46642 => "Lit",46643 => "Hallen\-Oviken",46644 => "Hammerdal",46645 => "Föllinge",46647 => "Åre\-Järpen",46650 => "Hudiksvall",46651 => "Ljusdal",46652 => "Bergsjö",46653 => "Delsbo",46657 => "Los",46660 => "Örnsköldsvik",46661 => "Bredbyn",46662 => "Björna",46663 => "Husum",46670 => "Strömsund",46671 => "Hoting",46672 => "Gäddede",46680 => "Sveg",46682 => "Rätan",46684 => "Hede\-Funäsdalen",46687 => "Svenstavik",46690 => "Ånge",46691 => "Torpshammar",46692 => "Liden",46693 => "Bräcke\-Gällö",46696 => "Hammarstrand",468 => "Stockholm",4690 => "Umeå",46910 => "Skellefteå",46911 => "Piteå",46912 => "Byske",46913 => "Lövånger",46915 => "Bastuträsk",46916 => "Jörn",46918 => "Norsjö",46920 => "Luleå",46921 => "Boden",46922 => "Haparanda",46923 => "Kalix",46924 => "Råneå",46925 => "Lakaträsk",46926 => "Överkalix",46927 => "Övertorneå",46928 => "Harads",46929 => "Älvsbyn",46930 => "Nordmaling",46932 => "Bjurholm",46933 => "Vindeln",46934 => "Robertsfors",46935 => "Vännäs",46940 => "Vilhelmina",46941 => "Åsele",46942 => "Dorotea",46950 => "Lycksele",46951 => "Storuman",46952 => "Sorsele",46953 => "Malå",46954 => "Tärnaby",46961 => "Arjeplog",46970 => "Gällivare",46971 => "Jokkmokk",46975 => "Hakkas",46976 => "Vuollerim",46977 => "Korpilombolo",46978 => "Pajala",46980 => "Kiruna",46981 => "Vittangi",);
      foreach my $prefix (map { substr($number, 0, $_) } reverse(1..length($number))) {
        return $map{"46$prefix"} if exists($map{"46$prefix"});
      }
      return undef;
    }
sub new {
  my $class = shift;
  my $number = shift;
  $number =~ s/(^\+46|\D)//g;
  my $self = bless({ number => $number, formatters => $formatters, validators => $validators }, $class);
  return $self if ($self->is_valid());
  $number =~ s/(^0)//g;
  $self = bless({ number => $number, formatters => $formatters, validators => $validators }, $class);
  return $self->is_valid() ? $self : undef;
}

1;