О чем можно написать на сайт про Perl, ожидая самолет на Perl-воркшоп? О модуле про авиацию :-)
На спане есть модуль Geo::ICAO, который содержит различные списки с информацией о кодах ICAO и функции-интерфейсы к ним. ICAO — международная организация гражданской авиации, которая помимо прочего выдает четырехбуквенные коды аэропортам и одно- или двухбуквенные коды странам и регионам мира.
Geo::ICAO группирует свои функции в несколько групп: регионы, страны и аэропорты и экспортирует их группами по запросу. Либо сразу все:
use Geo::ICAO qw(:all);
Часть функций просто возвращает списком все, что известно по теме, например, all_region_names и all_region_codes — списки названий и кодов регионов.
Другая часть отображает код на название и наоборот, например:
say region2code('Russia and former Soviet States');
say code2region('U');
Аналогично работают и функции all_country_names и all_country_codes (названия и коды стран) и пара country2code c code2country. В третьей группе — функции для работы с названиями и кодами аэропортов: all_airport_names, all_airport_codes, airport2code и code2airport:
say airport2code('Sheremetyevo International Airport');
say code2airport('UUEE');
В списочном контексте функция code2airport возвращает два значения (название аэропорта и его месторасположение):
my ($airport, $location) = code2airport('UUEE');
say "$airport, $location";
Этот вызов напечатает следующее:
Sheremetyevo International Airport, Moscow, Russia
При использовании модуля нужно помнить, что его последнее обновление было ровно два года назад, в ноябре 2007-го.
Geo::IATA ?
Андрей, мне кажется, что в строке
my ($airport, $location) = code2airport('UUEE');
не скалярный контекст, а списочный.