Spade
Mini Shell
| Directory:~$ /usr/share/perl5/vendor_perl/Business/ISBN/ |
| [Home] [System Details] [Kill Me] |
package Business::ISBN::Data;
use strict;
use vars qw($VERSION);
use Carp qw(carp);
use File::Basename qw(dirname);
use File::Spec::Functions qw(catfile);
$VERSION = '20120719.001';
=head1 NAME
Business::ISBN::Data - data pack for Business::ISBN
=head1 SYNOPSIS
see L<Business::ISBN>
=head1 DESCRIPTION
You don't need to load this module yourself in most cases.
C<Business::ISBN>
will load it when it loads.
These data are generated from the F<RangeMessage.xml> file provided
by
the ISBN Agency. You can retrieve this yourself at
L<http://www.isbn-international.org/agency?rmxml=1>.
This file is included as part of the distribution and should be installed
at F<~lib/Business/ISBN/RangeMessage.xml>.
If you want to use a different F<RangeMessage.xml> file, you can set
the C<ISBN_RANGE_MESSAGE> environment variable to the alternate
location
before you load C<Business::ISBN>. This way, you can use the latest
(or
even earlier) data without having to install something new or wait for
an update to this module.
If the default F<RangeMessage.xml> or your alternate one is not
available,
the module falls back to data included in F<Data.pm>. However, that
data
is likely to be older data.
The data are in C<%Business::ISBN::country_data> (although the
"country"
part is historical). If you want to see where the data are from, check
C<$Business::ISBN::country_data{_source}>.
=head1 SOURCE AVAILABILITY
This module lives in the Github repository with Business::ISBN:
git://github.com/briandfoy/business--isbn.git
If you have something to add, create a fork on Github and send a
pull request.
=head1 AUTHOR
brian d foy, C<< <bdfoy@cpan.org> >>
Yakov Shafranovich updated the data in October 2008.
Daniel Jakubik updated the data in July 2012.
=head1 COPYRIGHT AND LICENSE
Copyright (c) 2002-2012, brian d foy, All Rights Reserved.
You may redistribute this under the same terms as Perl itself.
=cut
sub _default_data {
(
_source => __FILE__,
0 => ['English language' => ['00' =>
'19', '200' => '699', '7000'
=> '8499', '85000' => '89999',
'900000' => '949999', '9500000' =>
'9999999'] ],
1 => ['English language' => ['00' =>
'09', '100' => '399', '4000'
=> '5499', '55000' => '86979',
'869800' => '998999', '9990000' =>
'9999999'] ],
10 => ['France' => ['00' =>
'19', '200' => '699', '7000'
=> '8999', '90000' => '97599',
'976000' => '999999'] ],
2 => ['French language' => ['00' =>
'19', '200' => '349', '35000'
=> '39999', '400' => '699',
'7000' => '8399', '84000' =>
'89999', '900000' => '949999',
'9500000' => '9999999'] ],
3 => ['German language' => ['00' =>
'02', '030' => '033', '0340'
=> '0369', '03700' => '03999',
'04' => '19', '200' => '699',
'7000' => '8499', '85000' =>
'89999', '900000' => '949999',
'9500000' => '9539999', '95400' =>
'96999', '9700000' => '9899999',
'99000' => '99499', '99500' =>
'99999'] ],
4 => ['Japan' => ['00' =>
'19', '200' => '699', '7000'
=> '8499', '85000' => '89999',
'900000' => '949999', '9500000' =>
'9999999'] ],
5 => ['Russian Federation and former USSR' =>
['00' => '19', '200' =>
'420', '4210' => '4299', '430'
=> '430', '4310' => '4399',
'440' => '440', '4410' =>
'4499', '450' => '699', '7000'
=> '8499', '85000' => '89999',
'900000' => '909999', '91000' =>
'91999', '9200' => '9299',
'93000' => '94999', '9500000' =>
'9500999', '9501' => '9799',
'98000' => '98999', '9900000' =>
'9909999', '9910' => '9999'] ],
600 => ['Iran' => ['00' => '09',
'100' => '499', '5000' =>
'8999', '90000' => '99999'] ],
601 => ['Kazakhstan' => ['00' =>
'19', '200' => '699', '7000'
=> '7999', '80000' => '84999',
'85' => '99'] ],
602 => ['Indonesia' => ['00' =>
'17', '18000' => '18999',
'19000' => '19999', '200' =>
'749', '7500' => '7999', '8000'
=> '9499', '95000' => '99999'] ],
603 => ['Saudi Arabia' => ['00' =>
'04', '05' => '49', '500' =>
'799', '8000' => '8999', '90000'
=> '99999'] ],
604 => ['Vietnam' => ['0' =>
'4', '50' => '89', '900' =>
'979', '9800' => '9999'] ],
605 => ['Turkey' => ['' => '',
'01' => '09', '100' => '399',
'4000' => '5999', '60000' =>
'89999', '90' => '99'] ],
606 => ['Romania' => ['0' =>
'0', '10' => '49', '500' =>
'799', '8000' => '9199', '92000'
=> '99999'] ],
607 => ['Mexico' => ['00' =>
'39', '400' => '749', '7500'
=> '9499', '95000' => '99999'] ],
608 => ['Macedonia' => ['0' =>
'0', '10' => '19', '200' =>
'449', '4500' => '6499', '65000'
=> '69999', '7' => '9'] ],
609 => ['Lithuania' => ['00' =>
'39', '400' => '799', '8000'
=> '9499', '95000' => '99999'] ],
611 => ['Thailand' => ['' => '']
],
612 => ['Peru' => ['00' => '29',
'300' => '399', '4000' =>
'4499', '45000' => '49999', '50'
=> '99'] ],
613 => ['Mauritius' => ['0' =>
'9'] ],
614 => ['Lebanon' => ['00' =>
'39', '400' => '799', '8000'
=> '9499', '95000' => '99999'] ],
615 => ['Hungary' => ['00' =>
'09', '100' => '499', '5000'
=> '7999', '80000' => '89999',
'' => ''] ],
616 => ['Thailand' => ['00' =>
'19', '200' => '699', '7000'
=> '8999', '90000' => '99999'] ],
617 => ['Ukraine' => ['00' =>
'49', '500' => '699', '7000'
=> '8999', '90000' => '99999'] ],
618 => ['Greece' => ['00' =>
'19', '200' => '499', '5000'
=> '7999', '80000' => '99999'] ],
619 => ['Bulgaria' => ['00' =>
'14', '150' => '699', '7000'
=> '8999', '90000' => '99999'] ],
620 => ['Mauritius' => ['0' =>
'9'] ],
7 => ['China, People\'s Republic' =>
['00' => '09', '100' =>
'499', '5000' => '7999', '80000'
=> '89999', '900000' => '999999'] ],
80 => ['Czech Republic and Slovakia' =>
['00' => '19', '200' =>
'699', '7000' => '8499', '85000'
=> '89999', '900000' => '999999'] ],
81 => ['India' => ['00' =>
'19', '200' => '699', '7000'
=> '8499', '85000' => '89999',
'900000' => '999999'] ],
82 => ['Norway' => ['00' =>
'19', '200' => '699', '7000'
=> '8999', '90000' => '98999',
'990000' => '999999'] ],
83 => ['Poland' => ['00' =>
'19', '200' => '599', '60000'
=> '69999', '7000' => '8499',
'85000' => '89999', '900000' =>
'999999'] ],
84 => ['Spain' => ['00' =>
'13', '140' => '149', '15000'
=> '19999', '200' => '699',
'7000' => '8499', '85000' =>
'89999', '9000' => '9199',
'920000' => '923999', '92400' =>
'92999', '930000' => '949999',
'95000' => '96999', '9700' =>
'9999'] ],
85 => ['Brazil' => ['00' =>
'19', '200' => '599', '60000'
=> '69999', '7000' => '8499',
'85000' => '89999', '900000' =>
'979999', '98000' => '99999'] ],
86 => ['Serbia (shared)' => ['00' =>
'29', '300' => '599', '6000'
=> '7999', '80000' => '89999',
'900000' => '999999'] ],
87 => ['Denmark' => ['00' =>
'29', '' => '', '400' =>
'649', '' => '', '7000' =>
'7999', '' => '', '85000' =>
'94999', '' => '', '970000'
=> '999999'] ],
88 => ['Italy' => ['00' =>
'19', '200' => '599', '6000'
=> '8499', '85000' => '89999',
'900000' => '909999', '910' =>
'929', '' => '', '95000' =>
'99999'] ],
89 => ['Korea, Republic' => ['00' =>
'24', '250' => '549', '5500'
=> '8499', '85000' => '94999',
'950000' => '969999', '97000' =>
'98999', '990' => '999'] ],
90 => ['Netherlands' => ['00' =>
'19', '200' => '499', '5000'
=> '6999', '70000' => '79999',
'800000' => '849999', '8500' =>
'8999', '90' => '90', '910000'
=> '939999', '94' => '94',
'950000' => '999999'] ],
91 => ['Sweden' => ['0' => '1',
'20' => '49', '500' => '649',
'' => '', '7000' => '7999',
'' => '', '85000' => '94999',
'' => '', '970000' =>
'999999'] ],
92 => ['International NGO Publishers and EC Organizations'
=> ['0' => '5', '60' =>
'79', '800' => '899', '9000'
=> '9499', '95000' => '98999',
'990000' => '999999'] ],
93 => ['India' => ['00' =>
'09', '100' => '499', '5000'
=> '7999', '80000' => '94999',
'950000' => '999999'] ],
94 => ['Netherlands' => ['000' =>
'599', '6000' => '8999', '90000'
=> '99999'] ],
950 => ['Argentina' => ['00' =>
'49', '500' => '899', '9000'
=> '9899', '99000' => '99999'] ],
951 => ['Finland' => ['0' =>
'1', '20' => '54', '550' =>
'889', '8900' => '9499', '95000'
=> '99999'] ],
952 => ['Finland' => ['00' =>
'19', '200' => '499', '5000'
=> '5999', '60' => '65',
'6600' => '6699', '67000' =>
'69999', '7000' => '7999', '80'
=> '94', '9500' => '9899',
'99000' => '99999'] ],
953 => ['Croatia' => ['0' =>
'0', '10' => '14', '150' =>
'509', '51' => '54', '55000'
=> '59999', '6000' => '9499',
'95000' => '99999'] ],
954 => ['Bulgaria' => ['00' =>
'28', '2900' => '2999', '300'
=> '799', '8000' => '8999',
'90000' => '92999', '9300' =>
'9999'] ],
955 => ['Sri Lanka' => ['0000' =>
'1999', '20' => '44', '4500'
=> '4999', '50000' => '54999',
'550' => '799', '8000' =>
'9499', '95000' => '99999'] ],
956 => ['Chile' => ['00' =>
'19', '200' => '699', '7000'
=> '9999'] ],
957 => ['Taiwan' => ['00' =>
'02', '0300' => '0499', '05'
=> '19', '2000' => '2099',
'21' => '27', '28000' =>
'30999', '31' => '43', '440'
=> '819', '8200' => '9699',
'97000' => '99999'] ],
958 => ['Colombia' => ['00' =>
'56', '57000' => '59999', '600'
=> '799', '8000' => '9499',
'95000' => '99999'] ],
959 => ['Cuba' => ['00' => '19',
'200' => '699', '7000' =>
'8499', '85000' => '99999'] ],
960 => ['Greece' => ['00' =>
'19', '200' => '659', '6600'
=> '6899', '690' => '699',
'7000' => '8499', '85000' =>
'92999', '93' => '93', '9400'
=> '9799', '98000' => '99999'] ],
961 => ['Slovenia' => ['00' =>
'19', '200' => '599', '6000'
=> '8999', '90000' => '94999',
'' => ''] ],
962 => ['Hong Kong, China' => ['00' =>
'19', '200' => '699', '7000'
=> '8499', '85000' => '86999',
'8700' => '8999', '900' =>
'999'] ],
963 => ['Hungary' => ['00' =>
'19', '200' => '699', '7000'
=> '8499', '85000' => '89999',
'9000' => '9999'] ],
964 => ['Iran' => ['00' => '14',
'150' => '249', '2500' =>
'2999', '300' => '549', '5500'
=> '8999', '90000' => '96999',
'970' => '989', '9900' =>
'9999'] ],
965 => ['Israel' => ['00' =>
'19', '200' => '599', '' =>
'', '7000' => '7999', '' =>
'', '90000' => '99999'] ],
966 => ['Ukraine' => ['00' =>
'12', '130' => '139', '14' =>
'14', '1500' => '1699', '170'
=> '199', '2000' => '2789',
'279' => '289', '2900' =>
'2999', '300' => '699', '7000'
=> '8999', '90000' => '90999',
'910' => '949', '95000' =>
'97999', '980' => '999'] ],
967 => ['Malaysia' => ['00' =>
'00', '0100' => '0999', '10000'
=> '19999', '' => '', '300'
=> '499', '5000' => '5999',
'60' => '89', '900' => '989',
'9900' => '9989', '99900' =>
'99999'] ],
968 => ['Mexico' => ['01' =>
'39', '400' => '499', '5000'
=> '7999', '800' => '899',
'9000' => '9999'] ],
969 => ['Pakistan' => ['0' =>
'1', '20' => '39', '400' =>
'799', '8000' => '9999'] ],
970 => ['Mexico' => ['01' =>
'59', '600' => '899', '9000'
=> '9099', '91000' => '96999',
'9700' => '9999'] ],
971 => ['Philippines' => ['000' =>
'015', '0160' => '0199', '02'
=> '02', '0300' => '0599',
'06' => '09', '10' => '49',
'500' => '849', '8500' =>
'9099', '91000' => '95999',
'9600' => '9699', '97' =>
'98', '9900' => '9999'] ],
972 => ['Portugal' => ['0' =>
'1', '20' => '54', '550' =>
'799', '8000' => '9499', '95000'
=> '99999'] ],
973 => ['Romania' => ['0' =>
'0', '100' => '169', '1700'
=> '1999', '20' => '54',
'550' => '759', '7600' =>
'8499', '85000' => '88999',
'8900' => '9499', '95000' =>
'99999'] ],
974 => ['Thailand' => ['00' =>
'19', '200' => '699', '7000'
=> '8499', '85000' => '89999',
'90000' => '94999', '9500' =>
'9999'] ],
975 => ['Turkey' => ['00000' =>
'01999', '02' => '24', '250'
=> '599', '6000' => '9199',
'92000' => '98999', '990' =>
'999'] ],
976 => ['Caribbean Community' => ['0' =>
'3', '40' => '59', '600' =>
'799', '8000' => '9499', '95000'
=> '99999'] ],
977 => ['Egypt' => ['00' =>
'19', '200' => '499', '5000'
=> '6999', '700' => '849',
'85000' => '89999', '90' =>
'99'] ],
978 => ['Nigeria' => ['000' =>
'199', '2000' => '2999', '30000'
=> '79999', '8000' => '8999',
'900' => '999'] ],
979 => ['Indonesia' => ['000' =>
'099', '1000' => '1499', '15000'
=> '19999', '20' => '29',
'3000' => '3999', '400' =>
'799', '8000' => '9499', '95000'
=> '99999'] ],
980 => ['Venezuela' => ['00' =>
'19', '200' => '599', '6000'
=> '9999'] ],
981 => ['Singapore' => ['00' =>
'11', '1200' => '1999', '200'
=> '289', '2900' => '9999'] ],
982 => ['South Pacific' => ['00' =>
'09', '100' => '699', '70' =>
'89', '9000' => '9799', '98000'
=> '99999'] ],
983 => ['Malaysia' => ['00' =>
'01', '020' => '199', '2000'
=> '3999', '40000' => '44999',
'45' => '49', '50' => '79',
'800' => '899', '9000' =>
'9899', '99000' => '99999'] ],
984 => ['Bangladesh' => ['00' =>
'39', '400' => '799', '8000'
=> '8999', '90000' => '99999'] ],
985 => ['Belarus' => ['00' =>
'39', '400' => '599', '6000'
=> '8999', '90000' => '99999'] ],
986 => ['Taiwan' => ['00' =>
'11', '120' => '559', '5600'
=> '7999', '80000' => '99999'] ],
987 => ['Argentina' => ['00' =>
'09', '1000' => '1999', '20000'
=> '29999', '30' => '49',
'500' => '899', '9000' =>
'9499', '95000' => '99999'] ],
988 => ['Hong Kong, China' => ['00' =>
'14', '15000' => '16999',
'17000' => '19999', '200' =>
'799', '8000' => '9699', '97000'
=> '99999'] ],
989 => ['Portugal' => ['0' =>
'1', '20' => '54', '550' =>
'799', '8000' => '9499', '95000'
=> '99999'] ],
9927 => ['Qatar' => ['00' =>
'09', '100' => '399', '4000'
=> '4999', '' => ''] ],
9928 => ['Albania' => ['00' =>
'09', '100' => '399', '4000'
=> '4999', '' => ''] ],
9929 => ['Guatemala' => ['0' =>
'3', '40' => '54', '550' =>
'799', '8000' => '9999'] ],
9930 => ['Costa Rica' => ['00' =>
'49', '500' => '939', '9400'
=> '9999'] ],
9931 => ['Algeria' => ['00' =>
'29', '300' => '899', '9000'
=> '9999'] ],
9932 => ['Lao People\'s Democratic Republic' =>
['00' => '39', '400' =>
'849', '8500' => '9999'] ],
9933 => ['Syria' => ['0' => '0',
'10' => '39', '400' => '899',
'9000' => '9999'] ],
9934 => ['Latvia' => ['0' => '0',
'10' => '49', '500' => '799',
'8000' => '9999'] ],
9935 => ['Iceland' => ['0' =>
'0', '10' => '39', '400' =>
'899', '9000' => '9999'] ],
9936 => ['Afghanistan' => ['0' =>
'1', '20' => '39', '400' =>
'799', '8000' => '9999'] ],
9937 => ['Nepal' => ['0' => '2',
'30' => '49', '500' => '799',
'8000' => '9999'] ],
9938 => ['Tunisia' => ['00' =>
'79', '800' => '949', '9500'
=> '9999'] ],
9939 => ['Armenia' => ['0' =>
'4', '50' => '79', '800' =>
'899', '9000' => '9999'] ],
9940 => ['Montenegro' => ['0' =>
'1', '20' => '49', '500' =>
'899', '9000' => '9999'] ],
9941 => ['Georgia' => ['0' =>
'0', '10' => '39', '400' =>
'899', '9000' => '9999'] ],
9942 => ['Ecuador' => ['00' =>
'89', '900' => '984', '9850'
=> '9999'] ],
9943 => ['Uzbekistan' => ['00' =>
'29', '300' => '399', '4000'
=> '9999'] ],
9944 => ['Turkey' => ['0000' =>
'0999', '100' => '499', '5000'
=> '5999', '60' => '69',
'700' => '799', '80' => '89',
'900' => '999'] ],
9945 => ['Dominican Republic' => ['00' =>
'00', '010' => '079', '08' =>
'39', '400' => '569', '57' =>
'57', '580' => '849', '8500'
=> '9999'] ],
9946 => ['Korea, P.D.R.' => ['0' =>
'1', '20' => '39', '400' =>
'899', '9000' => '9999'] ],
9947 => ['Algeria' => ['0' =>
'1', '20' => '79', '800' =>
'999'] ],
9948 => ['United Arab Emirates' => ['00' =>
'39', '400' => '849', '8500'
=> '9999'] ],
9949 => ['Estonia' => ['0' =>
'0', '10' => '39', '400' =>
'899', '9000' => '9999'] ],
9950 => ['Palestine' => ['00' =>
'29', '300' => '849', '8500'
=> '9999'] ],
9951 => ['Kosova' => ['00' =>
'39', '400' => '849', '8500'
=> '9999'] ],
9952 => ['Azerbaijan' => ['0' =>
'1', '20' => '39', '400' =>
'799', '8000' => '9999'] ],
9953 => ['Lebanon' => ['0' =>
'0', '10' => '39', '400' =>
'599', '60' => '89', '9000'
=> '9999'] ],
9954 => ['Morocco' => ['0' =>
'1', '20' => '39', '400' =>
'799', '8000' => '9999'] ],
9955 => ['Lithuania' => ['00' =>
'39', '400' => '929', '9300'
=> '9999'] ],
9956 => ['Cameroon' => ['0' =>
'0', '10' => '39', '400' =>
'899', '9000' => '9999'] ],
9957 => ['Jordan' => ['00' =>
'39', '400' => '699', '70' =>
'84', '8500' => '8799', '88'
=> '99'] ],
9958 => ['Bosnia and Herzegovina' => ['00'
=> '03', '040' => '089',
'0900' => '0999', '10' =>
'18', '1900' => '1999', '20'
=> '49', '500' => '899',
'9000' => '9999'] ],
9959 => ['Libya' => ['0' => '1',
'20' => '79', '800' => '949',
'9500' => '9699', '970' =>
'979', '98' => '99'] ],
9960 => ['Saudi Arabia' => ['00' =>
'59', '600' => '899', '9000'
=> '9999'] ],
9961 => ['Algeria' => ['0' =>
'2', '30' => '69', '700' =>
'949', '9500' => '9999'] ],
9962 => ['Panama' => ['00' =>
'54', '5500' => '5599', '56'
=> '59', '600' => '849',
'8500' => '9999'] ],
9963 => ['Cyprus' => ['0' => '1',
'20' => '24', '250' => '279',
'2800' => '2999', '30' =>
'54', '550' => '734', '7350'
=> '7499', '7500' => '9999'] ],
9964 => ['Ghana' => ['0' => '6',
'70' => '94', '950' => '999']
],
9965 => ['Kazakhstan' => ['00' =>
'39', '400' => '899', '9000'
=> '9999'] ],
9966 => ['Kenya' => ['000' =>
'149', '1500' => '1999', '20'
=> '69', '7000' => '7499',
'750' => '959', '9600' =>
'9999'] ],
9967 => ['Kyrgyz Republic' => ['00' =>
'39', '400' => '899', '9000'
=> '9999'] ],
9968 => ['Costa Rica' => ['00' =>
'49', '500' => '939', '9400'
=> '9999'] ],
9970 => ['Uganda' => ['00' =>
'39', '400' => '899', '9000'
=> '9999'] ],
9971 => ['Singapore' => ['0' =>
'5', '60' => '89', '900' =>
'989', '9900' => '9999'] ],
9972 => ['Peru' => ['00' => '09',
'1' => '1', '200' => '249',
'2500' => '2999', '30' =>
'59', '600' => '899', '9000'
=> '9999'] ],
9973 => ['Tunisia' => ['00' =>
'05', '060' => '089', '0900'
=> '0999', '10' => '69',
'700' => '969', '9700' =>
'9999'] ],
9974 => ['Uruguay' => ['0' =>
'2', '30' => '54', '550' =>
'749', '7500' => '9499', '95'
=> '99'] ],
9975 => ['Moldova' => ['0' =>
'0', '100' => '399', '4000'
=> '4499', '45' => '89',
'900' => '949', '9500' =>
'9999'] ],
9976 => ['Tanzania' => ['0' =>
'5', '60' => '89', '900' =>
'989', '9900' => '9999'] ],
9977 => ['Costa Rica' => ['00' =>
'89', '900' => '989', '9900'
=> '9999'] ],
9978 => ['Ecuador' => ['00' =>
'29', '300' => '399', '40' =>
'94', '950' => '989', '9900'
=> '9999'] ],
9979 => ['Iceland' => ['0' =>
'4', '50' => '64', '650' =>
'659', '66' => '75', '760' =>
'899', '9000' => '9999'] ],
9980 => ['Papua New Guinea' => ['0' =>
'3', '40' => '89', '900' =>
'989', '9900' => '9999'] ],
9981 => ['Morocco' => ['00' =>
'09', '100' => '159', '1600'
=> '1999', '20' => '79',
'800' => '949', '9500' =>
'9999'] ],
9982 => ['Zambia' => ['00' =>
'79', '800' => '989', '9900'
=> '9999'] ],
9983 => ['Gambia' => ['' => '',
'80' => '94', '950' => '989',
'9900' => '9999'] ],
9984 => ['Latvia' => ['00' =>
'49', '500' => '899', '9000'
=> '9999'] ],
9985 => ['Estonia' => ['0' =>
'4', '50' => '79', '800' =>
'899', '9000' => '9999'] ],
9986 => ['Lithuania' => ['00' =>
'39', '400' => '899', '9000'
=> '9399', '940' => '969',
'97' => '99'] ],
9987 => ['Tanzania' => ['00' =>
'39', '400' => '879', '8800'
=> '9999'] ],
9988 => ['Ghana' => ['0' => '2',
'30' => '54', '550' => '749',
'7500' => '9999'] ],
9989 => ['Macedonia' => ['0' =>
'0', '100' => '199', '2000'
=> '2999', '30' => '59',
'600' => '949', '9500' =>
'9999'] ],
99901 => ['Bahrain' => ['00' =>
'49', '500' => '799', '80' =>
'99'] ],
99902 => ['Gabon' => ['' => ''] ],
99903 => ['Mauritius' => ['0' =>
'1', '20' => '89', '900' =>
'999'] ],
99904 => ['Netherlands Antilles and Aruba' =>
['0' => '5', '60' => '89',
'900' => '999'] ],
99905 => ['Bolivia' => ['0' =>
'3', '40' => '79', '800' =>
'999'] ],
99906 => ['Kuwait' => ['0' => '2',
'30' => '59', '600' => '699',
'70' => '89', '90' => '94',
'950' => '999'] ],
99908 => ['Malawi' => ['0' => '0',
'10' => '89', '900' => '999']
],
99909 => ['Malta' => ['0' => '3',
'40' => '94', '950' => '999']
],
99910 => ['Sierra Leone' => ['0' =>
'2', '30' => '89', '900' =>
'999'] ],
99911 => ['Lesotho' => ['00' =>
'59', '600' => '999'] ],
99912 => ['Botswana' => ['0' =>
'3', '400' => '599', '60' =>
'89', '900' => '999'] ],
99913 => ['Andorra' => ['0' =>
'2', '30' => '35', '' =>
'', '600' => '604', '' =>
''] ],
99914 => ['Suriname' => ['0' =>
'4', '50' => '89', '900' =>
'999'] ],
99915 => ['Maldives' => ['0' =>
'4', '50' => '79', '800' =>
'999'] ],
99916 => ['Namibia' => ['0' =>
'2', '30' => '69', '700' =>
'999'] ],
99917 => ['Brunei Darussalam' => ['0' =>
'2', '30' => '89', '900' =>
'999'] ],
99918 => ['Faroe Islands' => ['0' =>
'3', '40' => '79', '800' =>
'999'] ],
99919 => ['Benin' => ['0' => '2',
'300' => '399', '40' => '69',
'70' => '70', '710' => '849',
'850' => '899', '900' =>
'999'] ],
99920 => ['Andorra' => ['0' =>
'4', '50' => '89', '900' =>
'999'] ],
99921 => ['Qatar' => ['0' => '1',
'20' => '69', '700' => '799',
'8' => '8', '90' => '99'] ],
99922 => ['Guatemala' => ['0' =>
'3', '40' => '69', '700' =>
'999'] ],
99923 => ['El Salvador' => ['0' =>
'1', '20' => '79', '800' =>
'999'] ],
99924 => ['Nicaragua' => ['0' =>
'1', '20' => '79', '800' =>
'999'] ],
99925 => ['Paraguay' => ['0' =>
'3', '40' => '79', '800' =>
'999'] ],
99926 => ['Honduras' => ['0' =>
'0', '10' => '59', '600' =>
'899', '90' => '99'] ],
99927 => ['Albania' => ['0' =>
'2', '30' => '59', '600' =>
'999'] ],
99928 => ['Georgia' => ['0' =>
'0', '10' => '79', '800' =>
'999'] ],
99929 => ['Mongolia' => ['0' =>
'4', '50' => '79', '800' =>
'999'] ],
99930 => ['Armenia' => ['0' =>
'4', '50' => '79', '800' =>
'999'] ],
99931 => ['Seychelles' => ['0' =>
'4', '50' => '79', '800' =>
'999'] ],
99932 => ['Malta' => ['0' => '0',
'10' => '59', '600' => '699',
'7' => '7', '80' => '99'] ],
99933 => ['Nepal' => ['0' => '2',
'30' => '59', '600' => '999']
],
99934 => ['Dominican Republic' => ['0' =>
'1', '20' => '79', '800' =>
'999'] ],
99935 => ['Haiti' => ['0' => '2',
'30' => '59', '600' => '699',
'7' => '8', '90' => '99'] ],
99936 => ['Bhutan' => ['0' => '0',
'10' => '59', '600' => '999']
],
99937 => ['Macau' => ['0' => '1',
'20' => '59', '600' => '999']
],
99938 => ['Srpska, Republic of' => ['0' =>
'1', '20' => '59', '600' =>
'899', '90' => '99'] ],
99939 => ['Guatemala' => ['0' =>
'5', '60' => '89', '900' =>
'999'] ],
99940 => ['Georgia' => ['0' =>
'0', '10' => '69', '700' =>
'999'] ],
99941 => ['Armenia' => ['0' =>
'2', '30' => '79', '800' =>
'999'] ],
99942 => ['Sudan' => ['0' => '4',
'50' => '79', '800' => '999']
],
99943 => ['Albania' => ['0' =>
'2', '30' => '59', '600' =>
'999'] ],
99944 => ['Ethiopia' => ['0' =>
'4', '50' => '79', '800' =>
'999'] ],
99945 => ['Namibia' => ['0' =>
'5', '60' => '89', '900' =>
'999'] ],
99946 => ['Nepal' => ['0' => '2',
'30' => '59', '600' => '999']
],
99947 => ['Tajikistan' => ['0' =>
'2', '30' => '69', '700' =>
'999'] ],
99948 => ['Eritrea' => ['0' =>
'4', '50' => '79', '800' =>
'999'] ],
99949 => ['Mauritius' => ['0' =>
'1', '20' => '89', '900' =>
'999'] ],
99950 => ['Cambodia' => ['0' =>
'4', '50' => '79', '800' =>
'999'] ],
99951 => ['Congo, The Democratic Republic' =>
['' => ''] ],
99952 => ['Mali' => ['0' => '4',
'50' => '79', '800' => '999']
],
99953 => ['Paraguay' => ['0' =>
'2', '30' => '79', '800' =>
'939', '94' => '99'] ],
99954 => ['Bolivia' => ['0' =>
'2', '30' => '69', '700' =>
'879', '88' => '99'] ],
99955 => ['Srpska, Republic of' => ['0' =>
'1', '20' => '59', '600' =>
'799', '80' => '89', '90' =>
'99'] ],
99956 => ['Albania' => ['00' =>
'59', '600' => '859', '86' =>
'99'] ],
99957 => ['Malta' => ['0' => '1',
'20' => '79', '800' => '999']
],
99958 => ['Bahrain' => ['0' =>
'4', '50' => '94', '950' =>
'999'] ],
99959 => ['Luxembourg' => ['0' =>
'2', '30' => '59', '600' =>
'999'] ],
99960 => ['Malawi' => ['0' => '0',
'10' => '94', '950' => '999']
],
99961 => ['El Salvador' => ['0' =>
'3', '40' => '89', '900' =>
'999'] ],
99962 => ['Mongolia' => ['0' =>
'4', '50' => '79', '800' =>
'999'] ],
99963 => ['Cambodia' => ['00' =>
'49', '500' => '999'] ],
99964 => ['Nicaragua' => ['0' =>
'1', '20' => '79', '800' =>
'999'] ],
99965 => ['Macau' => ['0' => '3',
'40' => '79', '800' => '999']
],
99966 => ['Kuwait' => ['0' => '2',
'30' => '69', '700' => '799',
'' => '', '' => ''] ],
99967 => ['Paraguay' => ['0' =>
'1', '20' => '59', '600' =>
'899', '' => ''] ],
99968 => ['Botswana' => ['0' =>
'3', '400' => '599', '60' =>
'89', '900' => '999'] ],
99969 => ['Oman' => ['0' => '4',
'50' => '79', '800' => '999']
],
99970 => ['Haiti' => ['0' => '4',
'50' => '89', '900' => '999']
],
);
}
sub _get_data {
# eventually fetch this from the internet
# http://www.isbn-international.org/agency?rmxml=1
my $file = do {
no warnings 'uninitialized';
if( -e $ENV{ISBN_RANGE_MESSAGE} ) { $ENV{ISBN_RANGE_MESSAGE} }
else {
my $default = catfile( dirname( __FILE__ ), 'RangeMessage.xml'
);
}
};
my $hash = _parse_range_message( $file );
if( defined $hash ) { return %$hash }
else { _default_data() }
}
sub _parse_range_message {
my( $file ) = @_;
open my $fh, '<:utf8', $file or do {
carp "Could not open $file to get ISBN range data [$!]";
return
};
my $data = do { local $/; <$fh> };
my $ds;
my( $serial_number ) = $data =~
m|<MessageSerialNumber>(.*?)</MessageSerialNumber>|;
my( $date ) = $data =~
m|<MessageDate>(.*?)</MessageDate>|;
$ds->{'_source'} = $file;
$ds->{'_serial'} = $serial_number;
$ds->{'_date'} = $date;
my( $registration_groups ) = $data =~
m|<RegistrationGroups>(.*?)</RegistrationGroups>|s;
my @groups = $registration_groups =~
m|<Group>(.*?)</Group>|sg;
foreach my $group ( @groups ) {
my( $prefix ) = $group =~
m|<Prefix>(?:97[89]-)?([0-9]+?)</Prefix>|;
my( $agency ) = $group =~ m|<Agency>(.*?)</Agency>|;
my @rules =
map {
my( $range ) = m|<Range>(.*?)</Range>|;
my( $length ) = m|<Length>(.*?)</Length>|;
my( $low, $high ) = split /-/, $range, 2;
( substr($low, 0, $length), substr($high, 0, $length) );
}
grep {
! m|<Length>0</Length>|
}
$group =~ m|<Rule>(.*?)</Rule>|sg;
$ds->{$prefix} = [ $agency => \@rules ];
}
$ds;
}
%Business::ISBN::country_data = _get_data();
# I cheat a little bit here. I know that that the max length is
# 5, and that I know that those will start with 999xx. :)
# however, if the data changes I should think about this again.
$Business::ISBN::MAX_COUNTRY_CODE_LENGTH = length(
( sort { $a <=> $b } grep { ! /\A_/ } keys
%Business::ISBN::country_data )[-1]
);
package Business::ISBN;
sub isbn_group_code_string_from_number {
return if $_[0] =~ /\A_/;
return $Business::ISBN::country_data{ $_[0] }[0] || '';
}
sub isbn_publisher_ranges_from_group_number {
return if $_[0] =~ /\A_/;
return $Business::ISBN::country_data{ $_[0] }[1] || [];
}
sub isbn_data_source {
return $Business::ISBN::country_data{ '_source' } || __FILE__
}
1;