先月は何年何月 (module)POSIX_mktime

back
1ヶ月前が 30 日か 31 日かがわからないので、epoch から秒数を引く方法でなく

use POSIX qw(mktime);
@now = (localtime)[4,5];
$now[0] -= 1;
@last = (localtime(mktime(0,0,0,1,@now)))[5,4];
$last[0] += 1900;
$last[1] += 1;

print join " ", @last;

ってなかんじで。

Time::Local モジュールの timelocal 関数だと、
-1 月や、30 日までしかない月の 31 日指定はエラーになるので、
POSIX モジュールの mktime を使う。
-1 も指定可能

back