5 my $nations_dir = 'nations';
10 # Non-standart or not in $nations_dir flags
12 'aq' => 'Regional/antarctica.svg',
13 'fo' => 'Regional/denmark_faroe_islands.svg',
14 'eu' => 'Organizations/europeanunion.svg',
15 'gi' => 'Regional/uk_gibraltar.svg',
16 'gl' => 'Regional/denmark_grenland.svg',
17 'hk' => 'Regional/china_hong_kong.svg',
18 'io' => 'Regional/british_indian_ocean_territory.svg',
19 'mo' => 'Regional/china_macau.svg',
20 # ! 'mq' => 'Regional/france_martinique.svg',
21 'nf' => 'Regional/australia_norfolk_island_australia.svg',
22 'pf' => 'Regional/france_french_polynesia.svg',
23 'tw' => 'Regional/taiwan.svg',
24 'su' => 'historic/ussr_historic.svg',
25 'ps' => 'Organizations/palestine.svg',
26 # ! 'wf' => 'Regional/france_wallis_and_futuna.svg',
29 # Hardcode some of the names
32 'cd' => 'congo_kinshasa',
33 'cg' => 'congo-brazzaville',# congo_brazzaville
35 'ch' => 'suisse', # switzerland
38 'gw' => 'guineabissau', # guinea_bissau
40 'im' => 'isle_of_man', # Unofficial!
41 'kp' => 'north_korea',
42 'kr' => 'south_korea',
50 'um' => 'united_states',
52 'vg' => 'virgin_islands_gb',
53 'vi' => 'virgin_islands_us',
59 if(/^\s*(.*?);(\w\w)\s*$/) {
60 my($name, $cc) = ($1, $2);
66 $name =~ s/\([^\)]+\)//g;
71 $name =~ s/(.*?),.*$/$1/g;
77 # Collect list of files
78 opendir(DIR, $nations_dir);
79 my @files = grep { s/\.svg//; } readdir(DIR);
82 mkdir($codes_dir) unless(-d $codes_dir);
84 foreach my $cc (keys(%extra)) {
85 my $from = $extra{$cc};
86 my $to = "${codes_dir}/${cc}.svg";
88 link($from, $to) || warn("Error linking $from to $to: $!\n");
91 symlink("../$from", $to) || warn("Error linking ../$from to $to: $!\n");
96 foreach my $country (@files) {
98 foreach my $cc (keys(%cc)) {
99 if($cc{$cc} eq $country) {
100 my $from = "${nations_dir}/${country}.svg";
101 my $to = "${codes_dir}/${cc}.svg";
103 link($from, $to) || warn("Error linking $from to $to: $!\n");
106 symlink("../$from", $to) || warn("Error linking ../$from to $to: $!\n");
112 undef($country) if($was_used);
116 foreach my $cc (sort(keys(%cc))) {
117 print "$cc\t", $cc{$cc}, "\n";
119 foreach my $country (@files) {
120 print "$country\n" if($country);
125 http://www.iso.org/iso/en/prods-services/iso3166ma/02iso-3166-code-lists/list-en1-semic.txt
126 This list states the country names (official short names in English) in alphabetical order as given in ISO 3166-1 and the corresponding ISO 3166-1-alpha-2 code elements. The list is updated whenever a change to the official code list in ISO 3166-1 is effected by the ISO 3166/MA. It lists 239 official short names and code elements. One line of text contains one entry. A country name and its code element are separated by a semicolon (;).
136 ANTIGUA AND BARBUDA;AG
154 BOSNIA AND HERZEGOVINA;BA
158 BRITISH INDIAN OCEAN TERRITORY;IO
168 CENTRAL AFRICAN REPUBLIC;CF
173 COCOS (KEELING) ISLANDS;CC
177 CONGO, THE DEMOCRATIC REPUBLIC OF THE;CD
188 DOMINICAN REPUBLIC;DO
196 FALKLAND ISLANDS (MALVINAS);FK
203 FRENCH SOUTHERN TERRITORIES;TF
220 HEARD ISLAND AND MCDONALD ISLANDS;HM
221 HOLY SEE (VATICAN CITY STATE);VA
228 IRAN, ISLAMIC REPUBLIC OF;IR
239 KOREA, DEMOCRATIC PEOPLE'S REPUBLIC OF;KP
240 KOREA, REPUBLIC OF;KR
243 LAO PEOPLE'S DEMOCRATIC REPUBLIC;LA
248 LIBYAN ARAB JAMAHIRIYA;LY
253 MACEDONIA, THE FORMER YUGOSLAV REPUBLIC OF;MK
266 MICRONESIA, FEDERATED STATES OF;FM
267 MOLDOVA, REPUBLIC OF;MD
278 NETHERLANDS ANTILLES;AN
286 NORTHERN MARIANA ISLANDS;MP
291 PALESTINIAN TERRITORY, OCCUPIED;PS
304 RUSSIAN FEDERATION;RU
307 SAINT KITTS AND NEVIS;KN
309 SAINT PIERRE AND MIQUELON;PM
310 SAINT VINCENT AND THE GRENADINES;VC
313 SAO TOME AND PRINCIPE;ST
316 SERBIA AND MONTENEGRO;CS
325 SOUTH GEORGIA AND THE SOUTH SANDWICH ISLANDS;GS
330 SVALBARD AND JAN MAYEN;SJ
334 SYRIAN ARAB REPUBLIC;SY
335 TAIWAN, PROVINCE OF CHINA;TW
337 TANZANIA, UNITED REPUBLIC OF;TZ
343 TRINIDAD AND TOBAGO;TT
347 TURKS AND CAICOS ISLANDS;TC
351 UNITED ARAB EMIRATES;AE
354 UNITED STATES MINOR OUTLYING ISLANDS;UM
360 VIRGIN ISLANDS, BRITISH;VG
361 VIRGIN ISLANDS, U.S.;VI