in reply to some problem with date

Just a word of caution: dealing with dates and times is much trickier then it might look at first sight.

Think for example that even for common situations, the 'distance' between yesterday and today might be anything between 1 second (yesterday 23:59:50 and today 00:00:00) and 48h - 1 second (yesterday 00:00:00 and today 23:59:59).

If it happens that it is 'one of those days' when daylight saving times changes, the day might have 25h or only 23h... And so on.

You might want to have a look on the documentation of Date::Manip to get some oversight; don't be scared, you'll soon find a reliable friend in it, but just realize that depending on the accuracy you need you might want somewhat different approaches.

Replies are listed 'Best First'.
Re^2: some problem with date
by Anonymous Monk on Apr 13, 2007 at 14:57 UTC
    Thank you Krambambuli will there be any problem in copying yesterdays file.
      Well... once you know which they are, I guess not (or that's another problem), but it is important to correctly define what are 'yesterday files'.

      I think it would be not an decision based on file_age_in_days, but rather something like 'those files that have creation date between yesterday 00:00:00 and today 00:00:00'.

      Something like below:
      use strict; use warnings; use Date::Manip; use File::stat; my $yesterday = ParseDate( 'yesterday midnight' ); my $today = ParseDate( 'today midnight' ); my $yesterday_midnight = &UnixDate( $yesterday, "%s" ); my $today_midnight = &UnixDate( $today, "%s" ); my @yesterday_files = (); foreach my $file ( <*> ) { my $stat = stat( $file ) or die "Cannot stat file $file: $!\n"; my $creation_date = $stat->ctime; push( @yesterday_files, $file ) if ( $creation_date < $today_midnight and $creation_date > $yesterday_midnight ); } foreach my $file (@yesterday_files) { # process, copy, ... }