是否有我可以使用的perl例程可以执行以下操作?我正在寻找一个很好的例子。
我希望能够根据范围打印出一系列日期。
作为参数我希望能够做到这样的事情: ./myperlscript -r 20110630 20110731(以-r =范围为例)。
所以基本上,如果我可以将这个格式的日期作为输入,并打印我那些日子。
20110630
20110701
20110702
...
..
答案 0 :(得分:4)
这应该让你开始。您可能希望添加一些输入验证(即确保@ARGV
的元素格式正确,第一个表示小于第二个的日期等,等等。)。
use strict;
use warnings;
use DateTime;
unless(@ARGV==2)
{
print "Usage: myperlscript first_date last_date\n";
exit(1);
}
my ($first_date,$last_date)=@ARGV;
my $date=DateTime->new(
{
year=>substr($first_date,0,4),
month=>substr($first_date,4,2),
day=>substr($first_date,6,2)
});
while($date->ymd('') le $last_date)
{
print $date->ymd('') . "\n";
$date->add(days=>1);
}
ETA:如果不清楚发生了什么,我们会创建$date
作为DateTime
对象,解析$first_date
中给出的年,月和日。然后,我们会在没有分隔符($date->ymd('')
)的情况下打印出年,月和日,并将$date
增加一天,直到我们处于$last_date
。