On 9/10/07, Mathew Snyder <[EMAIL PROTECTED]> wrote:
> I have a script which has to be manually edited to run for a span of days.  
> When
> these days are over several weeks it can be clearly tedious to enter dates in
> yyyy-mm-dd format.  I've decided to set it up to ask for user input.
>
> What I need is some input on is how to make it create the array for all the
> dates requested.  For instance, if someone wants to run the script spanning
> 07/20/2007 to 08/20/2007 how can I split that up to ensure it runs across all
> days and both months?
>
> I'm thinking I would have to split each argument into an array and then create
> an array for the months and days running a foreach loop over them both.  But
> then, how would I accommodate the varying number of days in each month?
snip

Take a look at the DateTime modules.

#!/usr/bin/perl

use strict;
use warnings;
use DateTime;

my %start; @start{qw<month day year>} = split /\//, shift;
my %end;   @end{qw<month day year>}   = split /\//, shift;

my $cur = DateTime->new(%start);
my $end = DateTime->new(%end);

while (DateTime->compare($cur, $end) < 1) {
        print $cur->strftime("%Y-%m-%d\n");
        $cur->add(days => 1);
}

[EMAIL PROTECTED]:~$ perl t.pl 09/10/2007 09/24/2007
2007-09-10
2007-09-11
2007-09-12
2007-09-13
2007-09-14
2007-09-15
2007-09-16
2007-09-17
2007-09-18
2007-09-19
2007-09-20
2007-09-21
2007-09-22
2007-09-23
2007-09-24

snip
> Any input will be appreciated.  Thanks.
snip

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/


Reply via email to