#!/usr/local/bin/perl

use strict;

use Math::Trig;

if (@ARGV)
{
    open(INFILE, "<$ARGV[0]") || die("Can't open $ARGV[0]\n");

    my $flattening = 0.09796;
    my $omf2 = ((1 - $flattening) * (1 - $flattening));
    my @months = ( 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 );
    for (my $i = 0; $i < 4; $i++)
    {
        <INFILE>;
    }
    while (<INFILE>)
    {
        my @fields = split(" ", $_);
        my $year      = $fields[0];
        my $day       = $fields[1];
        my $hour      = $fields[2];
        my $min       = $fields[3];
        my $sec       = $fields[4];
        my $lon       = $fields[5];
        my $lat       = $fields[6];
        my $localtime = $fields[7];
        my $rad       = $fields[8];

        if ($year eq "2000" || $year eq "2004" || $year eq "2008")
        {
            $months[1] = 29;
        }
        else
        {
            $months[1] = 28;
        }

        my $month = 0;
        while ($day > $months[$month])
        {
            $day -= $months[$month++];
        }
        $month++;

        # convert planetocentric latitude to planetographic
        $lat = deg2rad($lat);
        $lat = atan(tan($lat) / $omf2);
        $lat = rad2deg($lat);

        printf("%4.4d%2.2d%2.2d.%2.2d%2.2d%2.2d %10.3f %8.3f %8.3f %8.3f\n",
               $year, $month, $day, $hour, $min, $sec, $rad, $lat, $lon, $localtime);
    }
}
else
{
    print "Use this perl script with tables produced from http://www-pw.physics.uiowa.edu/~jbg/cas.html\n";
}


syntax highlighted by Code2HTML, v. 0.9.1