in reply to Re: Date::Calc and comparing across arrays?
in thread Date::Calc and comparing across arrays?
This is what I have so far...
#!/usr/bin/perl use strict; use warnings; use Text::CSV; use Date::Calc qw(:all); use Date::Calendar; #------------------------------------------- # #------------------------------------------- #--------------------------------------- # Edit Custom Variables Below #--------------------------------------- #-------------------------------- # Input and Output files #-------------------------------- #IN is the directory/filename.csv that the input csv is being written +to #OUT is the directory/filename.csv that the output csv #my $in = '/opt/data/input.csv'; #my $out = '/opt/data/output.csv'; my $in = 'c:/Users/cottenr/test.csv'; my $out = 'c:/Users/cottenr/foo.csv'; my $employee_number; my $employee_id; my $start_date; my $end_date; my $total_days; #--------------------------------------- # Program and Loop Section #--------------------------------------- #Looking for csv file to be written #START: while ( -e $in){ my $csv = Text::CSV->new ({ binary => 1, auto_diag => 1, sep_char => ',' # not really needed as this is the default }); #Open IN and OUT files open(my $data, '<:encoding(utf8)', $in) or die "Could not open '$in' f +ile \n"; <$data>; #skips header line of .csv file open(OUT, '>encoding(utf8)', $out) or die "Could not open '$out' file\ +n"; #Loop through the file and process data while (my $fields = $csv->getline( $data )) { $employee_number = $fields->[2]; $employee_id = $fields->[4]; $start_date = $fields->[17]; $end_date = $fields->[18]; $total_days = $fields->[21]; #Conditional eval for Date Comparison if($end_date > $highnumber) { } elsif ($count > $mednumber) { } else { } #Layout the format and write to OUT file print OUT "$employee_number, $employee_id, $start_date, $end_date, $to +tal_days\n"; } #While loop if (not $csv->eof) { $csv->error_diag(); } #--------------------------------------- # Finish it up! #--------------------------------------- #Print out the footer #Close the IN and OUT files close $data; close $in; close OUT; #Delete the INPUT csv file #unlink $in; } #--------------------------------------- # Take a Nap and do it all over again #--------------------------------------- #sleep 60; #goto START;
Not sure how to go about pulling the first line of the Array and then searching for other matches to see if the Start date -2days of line 2 is the enddate of line 1. If it matches then add total time and update my enddate on the OUT.
Thanks, Ray
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^3: Date::Calc and comparing across arrays?
by hdb (Monsignor) on Apr 10, 2013 at 08:18 UTC | |
by rcotten (Initiate) on Apr 11, 2013 at 07:17 UTC |