Public feed #727086

fox_parser

public text v1 · immutable
Raw Edit
·published 2007-10-05 19:08 UTC
rendered paste body
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;
}