#!/usr/bin/perl #use strict; use warnings; use DBI; use Time::Piece; use Time::Seconds; use Data::Dumper; use S::Utils qw(setOracleEnv); # -- call sub to set Oracle env so script can run as cronjob &setOracleEnv; my $filename = "all_dates.csv"; my %regular = ( Monday => ['08:00 am','1:00 am'], Tuesday => ['08:00 am','1:00 am'], Wednesday => ['08:00 am','1:00 am'], Thursday => ['08:00 am','1:00 am'], Friday => ['08:00 am','10:00 pm'], Saturday => ['09:00 am','10:00 pm'], Sunday => ['11:00 am','1:00 am'], ); #-- uncomment this for testing #print Data::Dumper->Dump([%regular]); my %except; open my $fh, '<', 'except.csv' or die "Cannot open: $!"; while (my $line = <$fh>) { $line =~ s/\s*\z//; my @array = split /,/, $line; my $key = shift @array; $except{$key} = \@array; } close $fh; my $t = localtime; my $end_date = '2016-12-31'; open OUT,'>','all_dates.csv' or die "$!"; my $id = 1; while ($t->ymd le $end_date){ my $ymd = $t->ymd; my $w = $t->fullday; my $open = $except{$ymd}[0] || $regular{$w}[0]; my $close = $except{$ymd}[1] || $regular{$w}[1]; my $is_closed = ($open eq '12: am') ? 1 : 0; print OUT "$id,$ymd,$w,$open,$close,$is_closed\n"; $t += ONE_DAY; ++$id; } close OUT;