use strict; use File::Copy; use Time::Local; use lib "/opt/perl/lib/site_perl/5.6.1/Mail"; use Mail::Sender; my $instance = "natt1"; my $instance_root = "/opt/manu/manu71/transport/$instance"; my $goodordpath = "$instance_root/order_good"; my $badordpath = "$instance_root/order_bad"; my $allmondayflag = 0; my $starttime = localtime; print "\n\n*** Starttime = $starttime ***\n\n"; if (-d "$instance_root/order_temp") { my $where = "$instance_root/order_temp"; print "Directory $where exists. Directory check was successful.\n\n"; # find the number of files we are to process my @count = (<$instance_root/order_temp/ord.*>); my $plural = (scalar(@count = (<$instance_root/order_temp/ord.*>)) == 1) ? "" : "s"; print "Processing ", scalar @count, " order file$plural.\n"; # if there are no files to process, bail print "\nThere are no files to process. Now exiting.\n" if (@count == 0); foreach my $orderfile (<$instance_root/order_temp/ord.*>) { print "\nProcessing Order File: $orderfile\n"; open (FILEH, $orderfile) or die "Could not open order file: $orderfile : $!"; $allmondayflag = 0; while (my $line = ) # loop as long as there are records in the file { my $ordertype = substr($line, 0, 2); # used to find the order header if ($ordertype eq "HM") # only look at the dates on the header records { my $ordernum = substr($line, 2, 7); my $date_str = substr($line, 64, 8); my ($year, $month, $day) = $date_str =~ m/(\d{4})(\d{2})(\d{2})/; my $time = timelocal("", "", "", $day, $month-1, $year); # For $month: Jan = 0, Feb = 1, etc. if ((localtime($time))[6] == 1 ) # the order is on a Monday { print " Order Number = $ordernum Order Date = $date_str is a Monday\n"; $allmondayflag = 1; next; # move onto the next record } else { $allmondayflag = 0; print " Order Number = $ordernum Order Date = $date_str is not a Monday. This file is OK to move and process.\n"; # We have found a date that is not a Monday. This file is OK. We need to move it to be processed close FILEH; move("$orderfile", $goodordpath) or die "Could not move the file $orderfile. Move failed: $!"; last; # bail out of the loop if date is not Monday and process the next order } if ($allmondayflag) { print " Order Number = $ordernum has order dates that are all Mondays. This is a bad order file and is being moved to $badordpath\n"; move("$orderfile", $badordpath) or die "\nCould not move the file $orderfile. Move failed: $!"; #$allmondayflag = 0; } } # end of Ordertype IF } # end of while loop # close file when we run out of lines to read close FILEH; } # end of ForEach loop } else { my $where = "$instance_root/order_temp"; print "Directory $where does not exist...now exiting\n\n"; } my $endtime = localtime; print "\n*** Endtime = $endtime ***\n\n";