Public feed
#727086
use warnings;
use strict;
my @toks;
while(<>){
if(/(\S+)\s+ASH\s+CLOUD/oi){
push @toks, [ 'ASH CLOUD', $1 ];
}
map {
if(/([NSEW]\d+)/){
push @toks, [ 'COORD', $1 ];
}
} split(/\s+/, $_);
}
my $print_coords = 0;
my (@lat,@lon) = ((),());
map {
if($_->[0] eq 'ASH CLOUD'){
if($_->[1] eq 'OBS'){
$print_coords = 1;
} else {
$print_coords = 0;
}
}
if($_->[0] eq 'COORD' and $print_coords) {
my $bar = substr($_->[1],0,1);
my $foo = substr($_->[1],1,5);
$foo = $bar =~ /s|w/i ? flip_sw($foo) : make_dec($foo);
push(@lat,$foo) if $bar =~ /e|w/i;
push(@lon,$foo) if $bar =~ /s|n/i;
}
} @toks;
while(@lat or @lon) {
print shift @lon, " - ", shift @lat, "\n";
}
sub lol_debug {
foreach my $lol (@toks) {
foreach my $rofl (@$lol) {
print "$rofl ";
}
print "\n";
}
}
exit 0;
sub flip_sw {
my $val = shift;
$val = make_dec(-$val);
return $val;
}
sub make_dec {
my $val = shift;
$val *= 0.01;
return $val;
}