#!/usr/bin/perl use v5.030; use warnings; use Astro::Coords; use Astro::MoonPhase; use DateTime; use DateTime::Format::ISO8601; use Log::Log4perl; my $file = '/home/hogan/Documents/hogan/logs/3.log4perl.txt'; unlink $file or warn "Could not unlink $file: $!"; my $log_conf4 = "/home/hogan/Documents/hogan/logs/conf_files/3.conf"; Log::Log4perl::init($log_conf4); #info my $logger = Log::Log4perl->get_logger(); ## time program my $now = DateTime->now( time_zone => 'UTC' ); $logger->info("$0 executed at $now"); # or, create a DateTime object from an ISO timestring my $isostr = '2021-10-09T11:13:57'; # jd 2459496.96802 my $dt = DateTime::Format::ISO8601->parse_datetime($isostr); my @phases = phasehunt($dt); $logger->info("@phases"); my $start_epoch = $phases[0]; my $end_epoch = $phases[4]; my $diff = $end_epoch - $start_epoch; my $hard_bottom = int($start_epoch); $logger->info("integer bottom is $hard_bottom"); $logger->info( "lunation is " . $diff / ( 24 * 60 * 60 ) . " days" ); $logger->info( "degrees covered per day is " . 360 / ( $diff / ( 24 * 60 * 60 ) ) . " degrees" ); ## end prelims for moonphase ## prelims for planets my $traveler1 = Astro::Coords->new( planet => 'Moon' ); my $traveler2 = Astro::Coords->new( planet => 'Venus' ); my $traveler3 = Astro::Coords->new( planet => 'Jupiter' ); my $moon_ra = 4.15; # values make initial while condition true my $venus_ra = 4.2; # values make initial while condition true my $jup_ra = 7; # values make initial while condition true while ( $moon_ra < $venus_ra ) { ## moon $traveler1->datetime($dt); $moon_ra = $traveler1->ra( format => q/deg/ ); ## venus $traveler2->datetime($dt); $venus_ra = $traveler2->ra( format => q/deg/ ); my $random = rand(); if ( $random > .99 ) { $logger->info("dt is $dt"); $logger->info("Moon ra is $moon_ra"); $logger->info("venus ra is $venus_ra"); } ## add a second to what $dt currently holds $dt->add( seconds => 1 ); } my $et = $dt->clone->subtract( seconds => 1 ); my $et_julian = $et->jd; $logger->info("dt is $dt"); $logger->info("et is $et"); $logger->info("Moon ra is $moon_ra"); $logger->info("venus ra is $venus_ra"); $logger->info("Julian equality is $et_julian"); my $later = DateTime->now( time_zone => 'UTC' ); my $seconds_dur = $later->subtract_datetime_absolute($now); $logger->info("Program duration is $seconds_dur seconds"); __END__ #### 2021/10/12 17:44:15 INFO ./2.vj.pl executed at 2021-10-12T23:44:15 2021/10/12 17:44:15 INFO -1952337.6024127 -1378241.1266014 -714314.659416676 -4036.13566160202 592540.73432833 2021/10/12 17:44:15 INFO integer bottom is -1952337 2021/10/12 17:44:15 INFO lunation is 29.4546103789471 days 2021/10/12 17:44:15 INFO degrees covered per day is 12.222195281772 degrees 2021/10/12 17:44:15 INFO dt is 2021-10-09T11:20:59 2021/10/12 17:44:15 INFO Moon ra is 235.845969901601 2021/10/12 17:44:15 INFO venus ra is 239.201830385495 2021/10/12 17:44:16 INFO dt is 2021-10-09T11:23:42 2021/10/12 17:44:16 INFO Moon ra is 235.865530833331 2021/10/12 17:44:16 INFO venus ra is 239.203970696164 ... 2021/10/12 17:45:02 INFO venus ra is 239.628594527327 2021/10/12 17:45:02 INFO dt is 2021-10-09T20:25:16 2021/10/12 17:45:02 INFO Moon ra is 239.625074172142 2021/10/12 17:45:02 INFO venus ra is 239.629628154514 2021/10/12 17:45:02 INFO dt is 2021-10-09T20:25:47 2021/10/12 17:45:02 INFO et is 2021-10-09T20:25:46 2021/10/12 17:45:02 INFO Moon ra is 239.630096069291 2021/10/12 17:45:02 INFO venus ra is 239.630025731277 2021/10/12 17:45:02 INFO Julian equality is 2459497.35122685 2021/10/12 17:45:02 INFO Program duration is DateTime::Duration=HASH(0x5642bb935d40) seconds