過去数か月間、次のコードを使用してきました。このコードは、定義済みの日付から今日の日付になるまでの数か月間ループします。
use Date::Pcalc qw(:all);
$startDay = 1;
$startMonth = '4';
$startYear = '2009';
$dateToday = `date +%Y-%m-%d`;
($yt,$mt,$dt) = split(/\-/,$dateToday);
while ($endMonth <= $mt || $startYear < $yt ) {
if ($startMonth eq '12') {
$endMonth = 1;
$endYear = $startYear + 1;
} else {
$endMonth = $startMonth + 1;
$endYear = $startYear;
}
if ($startMonth eq '12') {
$endYear = $startYear + 1;
}
($meYear,$meMonth,$meDay) = Add_Delta_Days($endYear,$endMonth,$startDay,-1);
$endOfMonth = "$meYear-$meMonth-$meDay";
$monthText = Month_to_Text($startMonth);
$startDate = "$startYear-$startMonth-1";
$endDate = "$endYear-$endMonth-1";
print "$startDate - $endDate\n";
if ($startMonth eq '12') {
$startMonth = 1;
$startYear++;
} else {
$startMonth++
}
}
これはここ数か月うまく機能していますが、12 月になり、$endmonth が $mt (12) を超えることはないため、無限ループが発生することに気付きました。
これを行う別の方法を見つけることができませんでした。これは比較的簡単に修正できるはずですが、深刻な「開発者のブロック」があるようです
ご協力いただける方には、あらかじめ感謝いたします。