Rand Stats




Geo::Region - Geographical regions and groupings using UN M.49 and CLDR data


This document describes Geo::Region for Perl 6, built with Unicode CLDR v26.


use Geo::Region;
use Geo::Region::Enum;

$amer = Geo::Region.new(include => Region::Americas);

$emea = Geo::Region.new(
    include => (Region::Europe, Region::WesternAsia, Region::Africa)

$apac = Geo::Region.new(
    include => (Region::Asia, Region::Oceania),
    exclude => Region::WesternAsia,

if $amer.contains($country) {
    # country is in the Americas (US, MX, BR, etc.)
elsif $emea.contains($country) {
    # country is in Europe, the Middle East, and Africa (FR, SA, ZW, etc.)
elsif $apac.contains($country) {
    # country is in Asia-Pacific (JP, TH, AU, etc.)


This class is used to create geographical regions and groupings of subregions and countries. Default regional groupings are provided using the Unicode CLDR v26 Territory Containment data, which is an extension of the United Nations UN M.49 (Rev.3) standard.


Regions and subregions are represented with UN M.49 region codes, such as 419 for Latin America and 035 for Southeast Asia. Either the official format using a three-digit 0-padded string like '035' or an integer like 35 may be used with this class. Note when using the 0-padded format that it must be quoted as a string so as not to be treated as on octal literal. The CLDR also adds two additional two-letter region codes which are supported: EU for the European Union and QO for Outlying Oceania. These region codes are all available as enumerations in Geo::Region::Enum.


Countries and territories are represented with ISO 3166-1 alpha-2 country codes, such as JP for Japan and AQ for Antarctica, and are case insensitive. Unlike with region codes, the three-digit forms of country codes are not currently supported, nor are three-letter codes. The deprecated code UK for the United Kingdom is supported as an alias of the official code GB.


The new class method is used to construct a Geo::Region object along with the include argument and optional exclude argument.




Nick Patch patch@cpan.org


© 2014 Nick Patch

This library is free software; you can redistribute it and/or modify it under the same terms as Perl 6 itself.