Index: lang/perl/HTTP-MobileAgent-Plugin-RoamingZone/tag/0.0.1/t/00.load.t
===================================================================
--- lang/perl/HTTP-MobileAgent-Plugin-RoamingZone/tag/0.0.1/t/00.load.t (revision 18409)
+++ lang/perl/HTTP-MobileAgent-Plugin-RoamingZone/tag/0.0.1/t/00.load.t (revision 18409)
@@ -0,0 +1,7 @@
+use Test::More tests => 1;
+
+BEGIN {
+use_ok( 'HTTP::MobileAgent::Plugin::RoamingZone' );
+}
+
+diag( "Testing HTTP::MobileAgent::Plugin::RoamingZone $HTTP::MobileAgent::Plugin::RoamingZone::VERSION" );
Index: lang/perl/HTTP-MobileAgent-Plugin-RoamingZone/tag/0.0.1/t/perlcritic.t
===================================================================
--- lang/perl/HTTP-MobileAgent-Plugin-RoamingZone/tag/0.0.1/t/perlcritic.t (revision 18409)
+++ lang/perl/HTTP-MobileAgent-Plugin-RoamingZone/tag/0.0.1/t/perlcritic.t (revision 18409)
@@ -0,0 +1,9 @@
+#!perl
+
+if (!require Test::Perl::Critic) {
+    Test::More::plan(
+        skip_all => "Test::Perl::Critic required for testing PBP compliance"
+    );
+}
+
+Test::Perl::Critic::all_critic_ok();
Index: lang/perl/HTTP-MobileAgent-Plugin-RoamingZone/tag/0.0.1/t/pod.t
===================================================================
--- lang/perl/HTTP-MobileAgent-Plugin-RoamingZone/tag/0.0.1/t/pod.t (revision 18409)
+++ lang/perl/HTTP-MobileAgent-Plugin-RoamingZone/tag/0.0.1/t/pod.t (revision 18409)
@@ -0,0 +1,6 @@
+#!perl -T
+
+use Test::More;
+eval "use Test::Pod 1.14";
+plan skip_all => "Test::Pod 1.14 required for testing POD" if $@;
+all_pod_files_ok();
Index: lang/perl/HTTP-MobileAgent-Plugin-RoamingZone/tag/0.0.1/t/01.parse.t
===================================================================
--- lang/perl/HTTP-MobileAgent-Plugin-RoamingZone/tag/0.0.1/t/01.parse.t (revision 18409)
+++ lang/perl/HTTP-MobileAgent-Plugin-RoamingZone/tag/0.0.1/t/01.parse.t (revision 18409)
@@ -0,0 +1,142 @@
+use strict;
+use Test::Base;
+
+use HTTP::MobileAgent::Plugin::RoamingZone;
+
+plan tests => 3 * blocks;
+
+filters {
+    input    => [qw/chomp/],
+    expected => [qw/chomp/],
+};
+
+run {
+    local %ENV;
+
+    my $block = shift;
+    my ($ua,$data)          = map { $_ eq 'UNDEF' ? undef : $_ eq 'NULL' ? '' : $_ } split(/\n/,$block->input);
+    my ($code,$name,$is_os) = map { $_ eq 'UNDEF' ? undef : $_ eq 'NULL' ? '' : $_ } split(/\n/,$block->expected);
+ 
+    $ENV{'HTTP_USER_AGENT'} = $ua;
+    my $key                 = $ua =~ /^DoCoMo/   ? 'HTTP_X_DCMROAMING' :
+                              $ua =~ /^SoftBank/ ? 'HTTP_X_JPHONE_REGION' :
+                                                   'HTTP_X_UP_DEVCAP_ZONE';
+    $ENV{$key}              = $data;
+
+    my $ma = HTTP::MobileAgent->new;
+
+    is ( $ma->zone_code,  $code  );
+    is ( $ma->zone_name,  $name  );
+    is ( $ma->is_oversea, $is_os );
+};
+
+
+__END__
+=== DoCoMo No Data
+--- input
+DoCoMo/2.0 P903i(c100;TB;W24H12)
+UNDEF
+--- expected
+440
+Japan
+0
+
+=== DoCoMo No Data
+--- input
+DoCoMo/2.0 P903i(c100;TB;W24H12)
+NULL
+--- expected
+440
+Japan
+0
+
+=== DoCoMo Greece
+--- input
+DoCoMo/2.0 P903i(c100;TB;W24H12)
+ 202
+--- expected
+202
+Greece
+1
+
+=== DoCoMo Haiti
+--- input
+DoCoMo/2.0 P903i(c100;TB;W24H12)
+ 372
+--- expected
+372
+Haiti (Republic of)
+1
+
+=== SoftBank No Data
+--- input
+SoftBank/1.0/910T/TJ001/SN351774012575317 Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1
+UNDEF
+--- expected
+440
+Japan
+0
+
+=== SoftBank No Data
+--- input
+SoftBank/1.0/910T/TJ001/SN351774012575317 Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1
+NULL
+--- expected
+440
+Japan
+0
+
+=== SoftBank Japan
+--- input
+SoftBank/1.0/910T/TJ001/SN351774012575317 Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1
+44020
+--- expected
+44020
+Japan
+0
+
+=== SoftBank Oversea
+--- input
+SoftBank/1.0/910T/TJ001/SN351774012575317 Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1
+fffff
+--- expected
+fffff
+Unknown
+1
+
+=== EZWEB No Data
+--- input
+KDDI-SA3D UP.Browser/6.2_7.2.7.1.K.1.5.123 (GUI) MMP/2.0
+NULL
+--- expected
+440
+Japan
+0
+
+=== EZWEB No Data
+--- input
+KDDI-SA3D UP.Browser/6.2_7.2.7.1.K.1.5.123 (GUI) MMP/2.0
+UNDEF
+--- expected
+440
+Japan
+0
+
+=== EZWEB Japan? (Need more information)
+--- input
+KDDI-SA3D UP.Browser/6.2_7.2.7.1.K.1.5.123 (GUI) MMP/2.0
+12304
+--- expected
+12304
+Japan
+0
+
+=== EZWEB Other case? (Need more information)
+--- input
+KDDI-SA3D UP.Browser/6.2_7.2.7.1.K.1.5.123 (GUI) MMP/2.0
+12345
+--- expected
+12345
+Unknown
+1
+
Index: lang/perl/HTTP-MobileAgent-Plugin-RoamingZone/tag/0.0.1/t/pod-coverage.t
===================================================================
--- lang/perl/HTTP-MobileAgent-Plugin-RoamingZone/tag/0.0.1/t/pod-coverage.t (revision 18409)
+++ lang/perl/HTTP-MobileAgent-Plugin-RoamingZone/tag/0.0.1/t/pod-coverage.t (revision 18409)
@@ -0,0 +1,6 @@
+#!perl -T
+
+use Test::More;
+eval "use Test::Pod::Coverage 1.04";
+plan skip_all => "Test::Pod::Coverage 1.04 required for testing POD coverage" if $@;
+all_pod_coverage_ok();
Index: lang/perl/HTTP-MobileAgent-Plugin-RoamingZone/tag/0.0.1/MANIFEST
===================================================================
--- lang/perl/HTTP-MobileAgent-Plugin-RoamingZone/tag/0.0.1/MANIFEST (revision 18409)
+++ lang/perl/HTTP-MobileAgent-Plugin-RoamingZone/tag/0.0.1/MANIFEST (revision 18409)
@@ -0,0 +1,9 @@
+Build.PL
+Changes
+lib/HTTP/MobileAgent/Plugin/RoamingZone.pm
+lib/HTTP/MobileAgent/Plugin/RoamingZone/CodeHash.pm
+Makefile.PL
+MANIFEST
+README
+t/00.load.t
+t/01.parse.t
Index: lang/perl/HTTP-MobileAgent-Plugin-RoamingZone/tag/0.0.1/lib/HTTP/MobileAgent/Plugin/RoamingZone.pm
===================================================================
--- lang/perl/HTTP-MobileAgent-Plugin-RoamingZone/tag/0.0.1/lib/HTTP/MobileAgent/Plugin/RoamingZone.pm (revision 18409)
+++ lang/perl/HTTP-MobileAgent-Plugin-RoamingZone/tag/0.0.1/lib/HTTP/MobileAgent/Plugin/RoamingZone.pm (revision 18409)
@@ -0,0 +1,170 @@
+package HTTP::MobileAgent::Plugin::RoamingZone;
+
+use warnings;
+use strict;
+use Carp;
+
+use version; our $VERSION = qv('0.0.1');
+use HTTP::MobileAgent;
+use HTTP::MobileAgent::Plugin::RoamingZone::CodeHash;
+
+##########################################
+# Base Module
+
+package # hide from PAUSE 
+       HTTP::MobileAgent;
+
+sub zone_code { $_[0]->_zone_code || '440' }
+
+sub _zone_code {}
+
+sub zone_name { 
+    $_[0]->_zone_name ||
+    HTTP::MobileAgent::Plugin::RoamingZone::CodeHash::zone_name($_[0]->zone_code) || 'Unknown'; 
+}
+
+sub _zone_name {}
+
+sub is_oversea { $_[0]->zone_name eq 'Japan' ? 0 : 1 }
+
+
+##########################################
+# DoCoMo Module
+
+package # hide from PAUSE
+       HTTP::MobileAgent::DoCoMo;
+
+sub _zone_code { 
+    my $ret = $_[0]->get_header('x-dcmroaming');
+    $ret =~ s/^.*(\d{3}).*$/$1/ if ( $ret );
+    $ret;
+}
+
+##########################################
+# EZWeb Module
+
+package # hide from PAUSE
+       HTTP::MobileAgent::EZweb;
+
+sub _zone_code { $_[0]->get_header('x-up-devcap-zone') }
+
+sub _zone_name { 'Japan' if ( $_[0]->zone_code eq '12304' ) }
+
+##########################################
+# SoftBank Module
+
+package # hide from PAUSE
+       HTTP::MobileAgent::Vodafone;
+
+sub _zone_code { $_[0]->get_header('x-jphone-region') }
+
+sub _zone_name {'Japan' if ( $_[0]->zone_code eq '44020' ) }
+
+
+1; # Magic true value required at end of module
+__END__
+
+=head1 NAME
+
+HTTP::MobileAgent::Plugin::RoamingZone - 日本の携帯電話から国内/海外のアクセス地域情報を得る
+
+
+=head1 SYNOPSIS
+
+    use HTTP::MobileAgent::Plugin::RoamingZone;
+
+    my $ma = HTTP::MobileAgent->new;
+
+    # 地域コードを得る
+    $ma->zone_code;
+
+    # 地域名を得る
+    $ma->zone_name;
+
+    # 国外かどうかの判定をする
+    $ma->is_oversea;
+
+  
+=head1 METHODS
+
+=over
+
+=item C<< zone_code >>
+
+=item C<< zone_name >>
+
+=item C<< is_oversea >>
+
+=back
+
+
+=head1 DEPENDENCIES
+
+=over
+
+=item C<< HTTP::MobileAgengt >>
+
+=item C<< Test::Base >>
+
+=back
+
+
+=head1 BUGS AND LIMITATIONS
+
+本モジュールは以下の仕様に基づき実装され、また実現している機能に制限があります。
+
+=head2 NTTドコモ
+
+L<http://www.nttdocomo.co.jp/service/imode/make/content/ip/index.html#world>に記載された仕様に従い実装され、
+国番号を取得し、L<http://www.itu.int/itudoc/itu-t/ob-lists/icc/e212_685.html>で配布されている国番号->国名の
+変換テーブルに従って、国名/国内海外判定を行っています。
+
+=head2 SoftBank
+
+L<http://creation.mb.softbank.jp/download.php?docid=102>にて配布されている、技術資料HTTP編に従い実装しています。
+2008年8月現在、国内海外判定しか機能せず、国名の判定には対応していません。
+
+=head2 KDDI
+
+公式な仕様が存在していませんが、L<http://mscl.jp/diary/img/KDDI-SA3D.txt>等でレポートされているグローバル
+パスポート携帯のみに存在するヘッダC<x-up-devcap-zone>において、地域情報が得られるのではないかとの想定の元
+実装しています。
+公式仕様がないため、実際にヘッダが返すデータと地域との対応表がありませんが、レポート・テストケース等の
+報告をお待ちしております。
+
+
+=head1 AUTHOR
+
+OHTSUKA Ko-hei  C<< <nene@kokogiko.net> >>
+
+
+=head1 LICENCE AND COPYRIGHT
+
+Copyright (c) 2008, OHTSUKA Ko-hei C<< <nene@kokogiko.net> >>. All rights reserved.
+
+This module is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself. See L<perlartistic>.
+
+
+=head1 DISCLAIMER OF WARRANTY
+
+BECAUSE THIS SOFTWARE IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE SOFTWARE, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE SOFTWARE "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
+EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE
+ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE SOFTWARE IS WITH
+YOU. SHOULD THE SOFTWARE PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL
+NECESSARY SERVICING, REPAIR, OR CORRECTION.
+
+IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE SOFTWARE AS PERMITTED BY THE ABOVE LICENCE, BE
+LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL,
+OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE
+THE SOFTWARE (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE SOFTWARE TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
Index: lang/perl/HTTP-MobileAgent-Plugin-RoamingZone/tag/0.0.1/lib/HTTP/MobileAgent/Plugin/RoamingZone/CodeHash.pm
===================================================================
--- lang/perl/HTTP-MobileAgent-Plugin-RoamingZone/tag/0.0.1/lib/HTTP/MobileAgent/Plugin/RoamingZone/CodeHash.pm (revision 18409)
+++ lang/perl/HTTP-MobileAgent-Plugin-RoamingZone/tag/0.0.1/lib/HTTP/MobileAgent/Plugin/RoamingZone/CodeHash.pm (revision 18409)
@@ -0,0 +1,264 @@
+package HTTP::MobileAgent::Plugin::RoamingZone::CodeHash;
+
+use strict;
+use Carp;
+
+my %codehash = (
+    '202' => 'Greece',
+    '204' => 'Netherlands (Kingdom of the)',
+    '206' => 'Belgium',
+    '208' => 'France',
+    '212' => 'Monaco (Principality of)',
+    '213' => 'Andorra (Principality of)',
+    '214' => 'Spain',
+    '216' => 'Hungary (Republic of)',
+    '218' => 'Bosnia and Herzegovina',
+    '219' => 'Croatia (Republic of)',
+    '220' => 'Serbia and Montenegro',
+    '222' => 'Italy',
+    '225' => 'Vatican City State',
+    '226' => 'Romania',
+    '228' => 'Switzerland (Confederation of)',
+    '230' => 'Czech Republic',
+    '231' => 'Slovak Republic',
+    '232' => 'Austria',
+    '234' => 'United Kingdom of Great Britain and Northern Ireland',
+    '235' => 'United Kingdom of Great Britain and Northern Ireland',
+    '238' => 'Denmark',
+    '240' => 'Sweden',
+    '242' => 'Norway',
+    '244' => 'Finland',
+    '246' => 'Lithuania (Republic of)',
+    '247' => 'Latvia (Republic of)',
+    '248' => 'Estonia (Republic of)',
+    '250' => 'Russian Federation',
+    '255' => 'Ukraine',
+    '257' => 'Belarus (Republic of)',
+    '259' => 'Moldova (Republic of)',
+    '260' => 'Poland (Republic of)',
+    '262' => 'Germany (Federal Republic of)',
+    '266' => 'Gibraltar',
+    '268' => 'Portugal',
+    '270' => 'Luxembourg',
+    '272' => 'Ireland',
+    '274' => 'Iceland',
+    '276' => 'Albania (Republic of)',
+    '278' => 'Malta',
+    '280' => 'Cyprus (Republic of)',
+    '282' => 'Georgia',
+    '283' => 'Armenia (Republic of)',
+    '284' => 'Bulgaria (Republic of)',
+    '286' => 'Turkey',
+    '288' => 'Faroe Islands',
+    '290' => 'Greenland (Denmark)',
+    '292' => 'San Marino (Republic of)',
+    '293' => 'Slovenia (Republic of)',
+    '294' => 'The Former Yugoslav Republic of Macedonia',
+    '295' => 'Liechtenstein (Principality of)',
+    '302' => 'Canada',
+    '308' => 'Saint Pierre and Miquelon (Collectivité territoriale de la République française)',
+    '310' => 'United States of America',
+    '311' => 'United States of America',
+    '312' => 'United States of America',
+    '313' => 'United States of America',
+    '314' => 'United States of America',
+    '315' => 'United States of America',
+    '316' => 'United States of America',
+    '330' => 'Puerto Rico',
+    '332' => 'United States Virgin Islands',
+    '334' => 'Mexico',
+    '338' => 'Jamaica',
+    '340' => 'Martinique (French Department of)',
+    '340' => 'Guadeloupe (French Department of)',
+    '342' => 'Barbados',
+    '344' => 'Antigua and Barbuda',
+    '346' => 'Cayman Islands',
+    '348' => 'British Virgin Islands',
+    '350' => 'Bermuda',
+    '352' => 'Grenada',
+    '354' => 'Montserrat',
+    '356' => 'Saint Kitts and Nevis',
+    '358' => 'Saint Lucia',
+    '360' => 'Saint Vincent and the Grenadines',
+    '362' => 'Netherlands Antilles',
+    '363' => 'Aruba',
+    '364' => 'Bahamas (Commonwealth of the)',
+    '365' => 'Anguilla',
+    '366' => 'Dominica (Commonwealth of)',
+    '368' => 'Cuba',
+    '370' => 'Dominican Republic',
+    '372' => 'Haiti (Republic of)',
+    '374' => 'Trinidad and Tobago',
+    '376' => 'Turks and Caicos Islands',
+    '400' => 'Azerbaijani Republic',
+    '401' => 'Kazakhstan (Republic of)',
+    '402' => 'Bhutan (Kingdom of)',
+    '404' => 'India (Republic of)',
+    '410' => 'Pakistan (Islamic Republic of)',
+    '412' => 'Afghanistan',
+    '413' => 'Sri Lanka (Democratic Socialist Republic of)',
+    '414' => 'Myanmar (Union of)',
+    '415' => 'Lebanon',
+    '416' => 'Jordan (Hashemite Kingdom of)',
+    '417' => 'Syrian Arab Republic',
+    '418' => 'Iraq (Republic of)',
+    '419' => 'Kuwait (State of)',
+    '420' => 'Saudi Arabia (Kingdom of)',
+    '421' => 'Yemen (Republic of)',
+    '422' => 'Oman (Sultanate of)',
+    '424' => 'United Arab Emirates',
+    '425' => 'Israel (State of)',
+    '426' => 'Bahrain (Kingdom of)',
+    '427' => 'Qatar (State of)',
+    '428' => 'Mongolia',
+    '429' => 'Nepal',
+    '430' => 'United Arab Emirates',
+    '431' => 'United Arab Emirates',
+    '432' => 'Iran (Islamic Republic of)',
+    '434' => 'Uzbekistan (Republic of)',
+    '436' => 'Tajikistan (Republic of)',
+    '437' => 'Kyrgyz Republic',
+    '438' => 'Turkmenistan',
+    '440' => 'Japan',
+    '441' => 'Japan',
+    '450' => 'Korea (Republic of)',
+    '452' => 'Viet Nam (Socialist Republic of)',
+    '454' => 'Hongkong, China',
+    '455' => 'Macao, China',
+    '456' => 'Cambodia (Kingdom of)',
+    '457' => 'Lao People\'s Democratic Republic',
+    '460' => 'China (People\'s Republic of)',
+    '461' => 'China (People\'s Republic of)',
+    '466' => 'Taiwan, China',
+    '467' => 'Democratic People\'s Republic of Korea',
+    '470' => 'Bangladesh (People\'s Republic of)',
+    '472' => 'Maldives (Republic of)',
+    '502' => 'Malaysia',
+    '505' => 'Australia',
+    '510' => 'Indonesia (Republic of)',
+    '514' => 'Democratique Republic of Timor-Leste',
+    '515' => 'Philippines (Republic of the)',
+    '520' => 'Thailand',
+    '525' => 'Singapore (Republic of)',
+    '528' => 'Brunei Darussalam',
+    '530' => 'New Zealand',
+    '534' => 'Northern Mariana Islands (Commonwealth of the)',
+    '535' => 'Guam',
+    '536' => 'Nauru (Republic of)',
+    '537' => 'Papua New Guinea',
+    '539' => 'Tonga (Kingdom of)',
+    '540' => 'Solomon Islands',
+    '541' => 'Vanuatu (Republic of)',
+    '542' => 'Fiji (Republic of)',
+    '543' => 'Wallis and Futuna (Territoire français d\'outre-mer)',
+    '544' => 'American Samoa',
+    '545' => 'Kiribati (Republic of)',
+    '546' => 'New Caledonia (Territoire français d\'outre-mer)',
+    '547' => 'French Polynesia (Territoire français d\'outre-mer)',
+    '548' => 'Cook Islands',
+    '549' => 'Samoa (Independent State of)',
+    '550' => 'Micronesia (Federated States of)',
+    '551' => 'Marshall Islands (Republic of the)',
+    '552' => 'Palau (Republic of)',
+    '602' => 'Egypt (Arab Republic of)',
+    '603' => 'Algeria (People\'s Democratic Republic of)',
+    '604' => 'Morocco (Kingdom of)',
+    '605' => 'Tunisia',
+    '606' => 'Libya (Socialist People\'s Libyan Arab Jamahiriya)',
+    '607' => 'Gambia (Republic of the)',
+    '608' => 'Senegal (Republic of)',
+    '609' => 'Mauritania (Islamic Republic of)',
+    '610' => 'Mali (Republic of)',
+    '611' => 'Guinea (Republic of)',
+    '612' => 'Côte d\'Ivoire (Republic of)',
+    '613' => 'Burkina Faso',
+    '614' => 'Niger (Republic of the)',
+    '615' => 'Togolese Republic',
+    '616' => 'Benin (Republic of)',
+    '617' => 'Mauritius (Republic of)',
+    '618' => 'Liberia (Republic of)',
+    '619' => 'Sierra Leone',
+    '620' => 'Ghana',
+    '621' => 'Nigeria (Federal Republic of)',
+    '622' => 'Chad (Republic of)',
+    '623' => 'Central African Republic',
+    '624' => 'Cameroon (Republic of)',
+    '625' => 'Cape Verde (Republic of)',
+    '626' => 'Sao Tome and Principe (Democratic Republic of)',
+    '627' => 'Equatorial Guinea (Republic of)',
+    '628' => 'Gabonese Republic',
+    '629' => 'Congo (Republic of the)',
+    '630' => 'Democratic Republic of the Congo',
+    '631' => 'Angola (Republic of)',
+    '632' => 'Guinea-Bissau (Republic of)',
+    '633' => 'Seychelles (Republic of)',
+    '634' => 'Sudan (Republic of the)',
+    '635' => 'Rwandese Republic',
+    '636' => 'Ethiopia (Federal Democratic Republic of)',
+    '637' => 'Somali Democratic Republic',
+    '638' => 'Djibouti (Republic of)',
+    '639' => 'Kenya (Republic of)',
+    '640' => 'Tanzania (United Republic of)',
+    '641' => 'Uganda (Republic of)',
+    '642' => 'Burundi (Republic of)',
+    '643' => 'Mozambique (Republic of)',
+    '645' => 'Zambia (Republic of)',
+    '646' => 'Madagascar (Republic of)',
+    '647' => 'Reunion (French Department of)',
+    '648' => 'Zimbabwe (Republic of)',
+    '649' => 'Namibia (Republic of)',
+    '650' => 'Malawi',
+    '651' => 'Lesotho (Kingdom of)',
+    '652' => 'Botswana (Republic of)',
+    '653' => 'Swaziland (Kingdom of)',
+    '654' => 'Comoros (Union of the)',
+    '655' => 'South Africa (Republic of)',
+    '657' => 'Eritrea',
+    '702' => 'Belize',
+    '704' => 'Guatemala (Republic of)',
+    '706' => 'El Salvador (Republic of)',
+    '708' => 'Honduras (Republic of)',
+    '710' => 'Nicaragua',
+    '712' => 'Costa Rica',
+    '714' => 'Panama (Republic of)',
+    '716' => 'Peru',
+    '722' => 'Argentine Republic',
+    '724' => 'Brazil (Federative Republic of)',
+    '730' => 'Chile',
+    '732' => 'Colombia (Republic of)',
+    '734' => 'Venezuela (Bolivarian Republic of)',
+    '736' => 'Bolivia (Republic of)',
+    '738' => 'Guyana',
+    '740' => 'Ecuador',
+    '742' => 'French Guiana (French Department of)',
+    '744' => 'Paraguay (Republic of)',
+    '746' => 'Suriname (Republic of)',
+    '748' => 'Uruguay (Eastern Republic of)',
+);
+
+sub zone_name { $codehash{$_[0]} }
+
+=head1 NAME
+
+HTTP::MobileAgent::Plugin::RoamingZone::CodeHash - 国番号と国名のリスト
+
+
+=head1 SYNOPSIS
+
+    use HTTP::MobileAgent::Plugin::RoamingZone::CodeHash;
+
+    my $name = HTTP::MobileAgent::Plugin::RoamingZone::CodeHash::zone_name( $code );
+
+
+
+=head1 METHODS
+
+=over
+
+=item C<< zone_name >>
+
+=back
+
+=cut
+
+1;
Index: lang/perl/HTTP-MobileAgent-Plugin-RoamingZone/tag/0.0.1/Makefile.PL
===================================================================
--- lang/perl/HTTP-MobileAgent-Plugin-RoamingZone/tag/0.0.1/Makefile.PL (revision 18409)
+++ lang/perl/HTTP-MobileAgent-Plugin-RoamingZone/tag/0.0.1/Makefile.PL (revision 18409)
@@ -0,0 +1,6 @@
+use lib qw(lib);
+use Module::Build::Compat;
+
+Module::Build::Compat->run_build_pl(args => \@ARGV);
+Module::Build::Compat->write_makefile(build_class => 'Module::Build');
+
Index: lang/perl/HTTP-MobileAgent-Plugin-RoamingZone/tag/0.0.1/.svnignore
===================================================================
--- lang/perl/HTTP-MobileAgent-Plugin-RoamingZone/tag/0.0.1/.svnignore (revision 18409)
+++ lang/perl/HTTP-MobileAgent-Plugin-RoamingZone/tag/0.0.1/.svnignore (revision 18409)
@@ -0,0 +1,13 @@
+blib*
+Makefile
+Makefile.old
+Build
+_build*
+pm_to_blib*
+*.tar.gz
+.lwpcookies
+HTTP-MobileAgent-Plugin-RoamingZone-*
+cover_db
+META.yml
+MANIFEST.bak
+t/localtest
Index: lang/perl/HTTP-MobileAgent-Plugin-RoamingZone/tag/0.0.1/Changes
===================================================================
--- lang/perl/HTTP-MobileAgent-Plugin-RoamingZone/tag/0.0.1/Changes (revision 18409)
+++ lang/perl/HTTP-MobileAgent-Plugin-RoamingZone/tag/0.0.1/Changes (revision 18409)
@@ -0,0 +1,5 @@
+Revision history for HTTP-MobileAgent-Plugin-RoamingZone
+
+0.0.1  Thu Aug 28 04:42:26 2008
+       Initial release.
+
Index: lang/perl/HTTP-MobileAgent-Plugin-RoamingZone/tag/0.0.1/Build.PL
===================================================================
--- lang/perl/HTTP-MobileAgent-Plugin-RoamingZone/tag/0.0.1/Build.PL (revision 18409)
+++ lang/perl/HTTP-MobileAgent-Plugin-RoamingZone/tag/0.0.1/Build.PL (revision 18409)
@@ -0,0 +1,17 @@
+use strict;
+use warnings;
+use Module::Build;
+
+my $builder = Module::Build->new(
+    module_name         => 'HTTP::MobileAgent::Plugin::RoamingZone',
+    license             => 'perl',
+    dist_author         => 'OHTSUKA Ko-hei <nene@kokogiko.net>',
+    dist_version_from   => 'lib/HTTP/MobileAgent/Plugin/RoamingZone.pm',
+    requires => {
+        'Test::More' => 0,
+        'version'    => 0,
+    },
+    add_to_cleanup      => [ 'HTTP-MobileAgent-Plugin-RoamingZone-*' ],
+);
+
+$builder->create_build_script();
Index: lang/perl/HTTP-MobileAgent-Plugin-RoamingZone/tag/0.0.1/MANIFEST.SKIP
===================================================================
--- lang/perl/HTTP-MobileAgent-Plugin-RoamingZone/tag/0.0.1/MANIFEST.SKIP (revision 18409)
+++ lang/perl/HTTP-MobileAgent-Plugin-RoamingZone/tag/0.0.1/MANIFEST.SKIP (revision 18409)
@@ -0,0 +1,10 @@
+t/p.*\.t
+t/localtest
+\.svn
+\.cvsignore
+MANIFEST\.
+Makefile$
+\.old
+Build$
+_build/
+blib/
Index: lang/perl/HTTP-MobileAgent-Plugin-RoamingZone/tag/0.0.1/README
===================================================================
--- lang/perl/HTTP-MobileAgent-Plugin-RoamingZone/tag/0.0.1/README (revision 18409)
+++ lang/perl/HTTP-MobileAgent-Plugin-RoamingZone/tag/0.0.1/README (revision 18409)
@@ -0,0 +1,52 @@
+HTTP-MobileAgent-Plugin-RoamingZone 
+
+本モジュールは以下の仕様に基づき実装され、また実現している機能に制限があります。
+
+NTTドコモ
+
+L<http://www.nttdocomo.co.jp/service/imode/make/content/ip/index.html#world>に記載された仕様に従い実装され、
+国番号を取得し、L<http://www.itu.int/itudoc/itu-t/ob-lists/icc/e212_685.html>で配布されている国番号->国名の
+変換テーブルに従って、国名/国内海外判定を行っています。
+
+SoftBank
+
+L<http://creation.mb.softbank.jp/download.php?docid=102>にて配布されている、技術資料HTTP編に従い実装しています。
+2008年8月現在、国内海外判定しか機能せず、国名の判定には対応していません。
+
+KDDI
+
+公式な仕様が存在していませんが、L<http://mscl.jp/diary/img/KDDI-SA3D.txt>等でレポートされているグローバル
+パスポート携帯のみに存在するヘッダC<x-up-devcap-zone>において、地域情報が得られるのではないかとの想定の元
+実装しています。
+公式仕様がないため、実際にヘッダが返すデータと地域との対応表がありませんが、レポート・テストケース等の
+報告をお待ちしております。
+
+
+INSTALLATION
+
+To install this module, run the following commands:
+
+	perl Makefile.PL
+	make
+	make test
+	make install
+
+Alternatively, to install with Module::Build, you can use the following commands:
+
+	perl Build.PL
+	./Build
+	./Build test
+	./Build install
+
+
+DEPENDENCIES
+
+None.
+
+
+COPYRIGHT AND LICENCE
+
+Copyright (C) 2008, OHTSUKA Ko-hei
+
+This library is free software; you can redistribute it and/or modify
+it under the same terms as Perl itself.
