#!/usr/bin/perl # # Convert Brian Skiff's file with data on "E region" stars into # a computer-friendly form. For example, # translate the HH MM SS and DD MM SS to decimal degrees of # RA and Dec for stars in the Dearborn spectral catalog file # while () { if (substr($_, 0, 1) eq "#") { printf "%s", $_; next; } chomp($_); if ((length($_) == 0) || (substr($_, 0, 1) eq " ")) { printf "\n", $_; next; } $name = substr($_, 0, 10); for ($i = 9; $i > 0; $i--) { if (substr($name, $i, 1) ne " ") { last; } } for ($j = 0; $j < $i; $j++) { if (substr($name, $j, 1) eq " ") { substr($name, $j, 1) = "_"; } } $rah = substr($_, 10, 2); $ram = substr($_, 13, 2); $ras = substr($_, 16, 5); $decd = substr($_, 22, 3); $decm = substr($_, 26, 2); $decs = substr($_, 29, 4); if ($decd =~ /-.*/) { $sign = -1; } else { $sign = 1; } $s = substr($_, 34, 1); if ($s eq " ") { $s = "."; } $gsc = substr($_, 36, 9); if ($gsc eq " ") { $gsc = 0; } $tycho2 = substr($_, 46, 11); if ($tycho2 eq " ") { $tycho2 = 0; } else { $tycho2 =~ s/\ /_/g; } $v = substr($_, 59, 6); if ($v eq " ") { $v = 99.0; } $bv = substr($_, 66, 6); if ($bv eq " ") { $bv = 99.0; } $ub = substr($_, 73, 6); if ($ub eq " ") { $ub = 99.0; } $vr = substr($_, 80, 6); if ($vr eq " ") { $vr = 99.0; } $ri = substr($_, 87, 6); if ($ri eq " ") { $ri = 99.0; } $vi = substr($_, 94, 6); if ($vi eq " ") { $vi = 99.0; } $sigv = substr($_, 102, 5); if ($sigv eq " ") { $sigv = 99.0; } $sigbv = substr($_, 108, 5); if ($sigbv eq " ") { $sigbv = 99.0; } $sigub = substr($_, 114, 5); if ($sigub eq " ") { $sigub = 99.0; } $sigvr = substr($_, 120, 5); if ($sigvr eq " ") { $sigvr = 99.0; } $sigri = substr($_, 126, 5); if ($sigri eq " ") { $sigri = 99.0; } $sigvi = substr($_, 132, 5); if ($sigvi eq " ") { $sigvi = 99.0; } $num = substr($_, 138, 2); if ($num eq " ") { $num = 0; } $remark = substr($_, 142, 15); if (substr($remark, 0, 2) eq " ") { $remark = "."; } if (($v != 99) && ($bv != 99)) { $b = $v + $bv; } else { $b = 99; } if (($b != 99) && ($ub != 99)) { $u = $b + $ub; } else { $u = 99; } if (($v != 99) && ($vr != 99)) { $r = $v - $vr; } else { $r = 99; } if (($r != 99) && ($ri != 99)) { $i = $r - $ri; } else { $i = 99; } # sanity check if (($v != 99) && ($vi != 99)) { $i2 = $v - $vi; } if (abs($i - $i2) > 0.01) { printf "mismatch: i $i i2 $i2 \n"; } if (($sigv != 99) && ($sigbv != 99)) { $sigb = sqrt($sigv*$sigv + $sigbv*$sigbv); } else { $sigb = 99; } if (($sigb != 99) && ($sigub != 99)) { $sigu = sqrt($sigb*$sigb + $sigub*$sigub); } else { $sigu = 99; } if (($sigv != 99) && ($sigvr != 99)) { $sigr = sqrt($sigv*$sigv + $sigvr*$sigvr); } else { $sigr = 99; } if (($sigr != 99) && ($sigri != 99)) { $sigi = sqrt($sigr*$sigr + $sigri*$sigri); } else { $sigi = 99; } # calculate the RA and Dec in decimal degrees $ra_deg = ($rah + ($ram/60.0) + ($ras/3600.0))*15.0; if ($decd < 0) { $decd = 0.0 - $decd; } $dec_deg = $sign*($decd + ($decm/60.0) + ($decs/3600.0)); # now print out the information printf "%-10s %9.5f %9.5f %1s %9s %11s %6.3f %6.3f %6.3f %6.3f %6.3f %5.3f %5.3f %5.3f %5.3f %5.3f %2d %s \n", $name, $ra_deg, $dec_deg, $s, $gsc, $tycho2, $u, $b, $v, $r, $i, $sigu, $sigb, $sigv, $sigr, $sigi, $num, $remark; } exit 0;