前日の年月日を得る

当日の年月日は、localtimeとtimeを使えば、すぐに解決。

my @arr = localtime(time);
my $y = $arr[5] + 1900;
my $m = $arr[4] + 1;
my $d = $arr[3];
printf "%d %d %d\n", $y, $m, $d;

前日というのは実にやっかいで、前述の$dから引き算をすると、2013年4月0日とかになってしまう。

そこでいろいろ考えてみたが以下略

timeの返り値から1日分の秒数を引けば解決。

my @arr = localtime(time-24*60*60);
my $y = $arr[5] + 1900;
my $m = $arr[4] + 1;
my $d = $arr[3];
printf "%d %d %d\n", $y, $m, $d;