—#!/usr/bin/env perl
#
# This file is part of Geo::ICAO
# Copyright (c) 2007 Jerome Quelin, all rights reserved.
#
# This program is free software; you can redistribute it and/or modify
# it under the same terms as Perl itself.
#
#
use
strict;
use
warnings;
use
Encode;
use
Readonly;
# fetch data from wikipedia
foreach
my
$letter
(
'A'
..
'Z'
) {
my
$url
=
$URL
.
$letter
;
my
@lines
=
qx[ lynx -dump -nolist -width=500 $url ]
;
#my @lines = qx[cat codes];
foreach
my
$line
(
map
{decode(
'utf-8'
,
$_
)}
@lines
) {
chomp
$line
;
next
unless
$line
=~
/\A
\s+ \*
# a litteral *
\s+
$letter
[A-Z]{3}
# the airport code
\s+
# some space just after
.* \N{EN DASH}
# and a dash
/x;
my
(
$code
,
$name
,
$location
) =
split
/\s*\N{EN DASH}\s*/,
$line
;
$code
=~ s/^\s*\*\s*//;
$code
=~ s/\s*\([^)]+\)\s*//;
$location
||=
''
;
my
$out
=
"$code|$name|$location"
;
encode(
'utf-8'
,
"$out\n"
);
}
}
exit
;
__END__
=head1 NAME
get-airport_codes - fetch ICAO airport code from wikipedia
=head1 SYNOPSIS
using vi to update Geo::ICAO...
$ vi lib/Geo/ICAO.pm
/__DATA
jdG
:r!scripts/get-airport_codes
=head1 DESCRIPTION
A comprehensive list of ICAO airport codes is available on
C<get-airport_codes> is a small script that will fetch and parse these
urls (one for each of the 26 letters), to extract this list of airport
codes. It will then dump them as "code|name|location" lines, to be
inserted directly in Geo::ICAO's C<DATA> section.
=head1 AUTHOR
Jerome Quelin, C<< <jquelin at cpan.org> >>
=head1 COPYRIGHT & LICENSE
Copyright (c) 2007 Jerome Quelin, all rights reserved.
This program is free software; you can redistribute it and/or modify
it under the same terms as Perl itself.
=cut