in reply to check to see if a file has todays data in it, if it has exit if not then add data
You are testing for the date matching on every line. This is not what you want. I think what I've put together below gets you closer.
#!/usr/local/bin/perl use warnings; use strict; use Fcntl (); my @dateParts = localtime (); my ($day, $month, $year) = @dateParts[3 .. 5]; $year += 1900; $month += 1; my $already_there = 0; open my $mon, '<', "C:\\temp\\MONTHLY.CSV" or die "Cannot read file $! +\n"; while ( defined ( my $line = <$mon> ) ) { my ( $date ) = split ',', $line; if ( $date eq "$day $month $year" ) { print "\ file has already been updated today"; $already_there++; last; } } close $mon; if ( ! $already_there ) { open my $day, "C:\\temp\\DAILY.CSV" or die "Cannot read file $!\n" +; flock $day, Fcntl::LOCK_SH; open $mon, '>>', "C:\\temp\\MONTHLY.CSV" or die "Cannot write to f +ile $!\n"; flock $mon, Fcntl::LOCK_EX; <$day>; # get past header while ( <$day> ) { print { $mon } $_; } close $day; close $mon or die "Could not complete writing to monthly file: $!\ +n"; } exit $already_there;
|
|---|