現在のTime::Pieceの最新版は、1.27。 翌月は何月か、というのを得るのに #!/usr/bin/env perl use strict; use warnings; use Time::Piece; my $t = localtime; print $t->add_months(1)->mon, "\n"; というコードを書いていて、1月31日に実行したら3が返ってきていてハマった。という話。 Time::Piece::add_monthsで月を操作した結果の日付がその月の月末を超えていると、正規化されて翌月の日付になってしまうようだ。 $ perl -MTime::Piece -E 'say Time::Piece->localtime->ymd' 2014-01-31 $ perl -MTime::Piece -E 'say Time::Piece->localtime->