#!/usr/bin/perl -w my $pkgdoc = <<'EOD'; #/**------------------------------------------------------------------- # @ file TC-parcer.pl # This script parses the fetched TC data from Dr. landsea's TC # reclassification project. # # date: June 25, 2008 #--------------------------------------------------------------------*/ EOD # ## Pull arguments from the command line # use strict; use warnings; use Getopt::Long; if (@ARGV <1) { # if arguments is smaller than 1 then print the pacakage document print $pkgdoc; exit -1; } my $txtfile = shift; # pulling arguments # ## Open text file with Dr. Landsea's data if not stop the program # open (DATA, $txtfile)||die "cannot open $txtfile for reading"; # ## Gather data from the title line # my $format = "a5 x a x a5 x a x a4 x a4 x a x a3 x a9 x a x a13 x a5 x a x a4 x a"; my ($CardNo, $MMDD, $YY, $StormNo, $TotalNo, $Name, $XING, $SSS) = ($1, $3, $5, $7, $8, $10, $11, $13, $15); while () { if (/^XING/) { ($CardNo, $MMDD, $YY, $StormNo, $TotalNo, $Name, $XING, $SSS)= unpack ($format, $_); my $TotalNo = $TotalNo * 4; if ($Name && $Name =~ /NOT NAMED/){$Name = "NONAME";} } last; print OUT "$MMDD $TotalNo $Name$StormNo-$YY $XING $SSS $CardNo\n"; } # ## Gather important data of the center of each storm # my $format1 = "a5 x a x a5 x a x a3 x a4 x a x a3 x a x a4 x a x a3 x a4 x a x a3 x a x a4 x a x a3 x a4 x a x a3 x a x a4 x a x a3 x a4 x a x a3 x a x a4 x a1"; my (@MMDDdata, @Stages1, @LAT1, @LONG1, @MaxWind1, @MinP1, @Stages2, @LAT2, @LONG2, @MaxWind2, @MinP2, @Stages3, @LAT3, @LONG3, @MaxWind3, @MinP3, @Stages4, @LAT4, @LONG4, @MaxWind4, @MinP4) = ($3, $11, $5, $6, $8, $10, $18, $12, $13, $15, $17, $24, $19, $20, $22, $24, $32, $26, $27, $29, $31); while () { my (@MMDDdata, @Stages1, @LAT1, @LONG1, @MaxWind1, @MinP1, @Stages2, @LAT2, @LONG2, @MaxWind2, @MinP2, @Stages3, @LAT3, @LONG3, @MaxWind3, @MinP3, @Stages4, @LAT4, @LONG4, @MaxWind4, @MinP4) = unpack ($format1, $_); last if (!defined($LAT2)); print OUT "@MMDDdata 0000 @LAT1 @LONG1 @MaxWind1 @MinP1 @Stages1\n @MMDDdata 0600 @LAT2 @LONG2 @MaxWind2 @MinP2 @Stages2\n @MMDDdata 1200 @LAT3 @LONG3 @MaxWind3 @MinP3 @Stages3\n @MMDDdata 1800 @LAT4 @LONG4 @MaxWind4 @MinP4 @Stages4\n"; } close (DATA); close (OUT);