ebony smith wrote: > I am new to perl and need to compare some dates in a file stored in > dd-mm-yyyy format to find out if the dates are greater than 30, 60 or 90 > days. > However, I am not quite sure how to go about doing that in perl and I > was wondering if anyone out there had any tips on how to do this. > > > I extract the data required using the following to get a date and username > > if (-e $FILE) { unlink $FILE ;} > open (CHK, ">> $FILE") || die "Cannot open $FILE"; > > system (`awk '/Login/ {print \$1,\$7}' $FILE1 | sort -u >> > $FILE1`); > > > Then this gives me the current date > > $tm = localtime($date); > $day = $tm->mday; > $month = $tm->mon+1; > $year = $tm->year+1900; > > if ( $day < 10 ){ > $day="0$day"; > } > > if ( $month < 10 ){ > $month="0$month"; > } > > $querydate = "$year-$month-$day"; > return $querydate > > > However I am not too sure how to go about comparing the date extracted > from the data file with the current date to find out if it is greater > 30, 60 or 90 days.
use warnings; use strict; use Date::Calc 'Add_Delta_Days'; my ( $today_day, $today_month, $today_year ) = ( localtime )[ 3, 4, 5 ]; $today_month++; $today_year += 1900; my $today_minus_30 = sprintf '%04d%02d%02d', Add_Delta_Days $today_year, $today_month, $today_day, -30; my $today_minus_60 = sprintf '%04d%02d%02d', Add_Delta_Days $today_year, $today_month, $today_day, -60; my $today_minus_90 = sprintf '%04d%02d%02d', Add_Delta_Days $today_year, $today_month, $today_day, -90; open CHK, '<', $FILE1 or die "Cannot open '$FILE1' $!"; my %unique; while ( <CHK> ) { next unless /Login/; my ( $date, $username ) = ( split )[ 0, 6 ]; $date = sprintf '%04d%02d%02d', reverse $date =~ /\d+/g; $unique{ $date, $username } = (); } my @sorted = map [ split $; ], sort keys %unique; for my $record ( @sorted ) { if ( $record->[ 0 ] > $today_minus_90 ) { do_something(); } if ( $record->[ 0 ] > $today_minus_60 ) { do_something(); } if ( $record->[ 0 ] > $today_minus_30 ) { do_something(); } } John -- use Perl; program fulfillment -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] <http://learn.perl.org/> <http://learn.perl.org/first-response>