Perl - 日付処理
今日から後ろ10日間、とか、今日から前 10 日間の日付を欲しいときイテレータを使うとラク。
#!/usr/bin/env perl use strict; use warnings; use 5.010; use Time::Piece; use Time::Seconds; my $iterator = date_iterator( base => Time::Piece->new, during => +10, # -10 で前 10 日間になる ); while (my $date = $iterator->()) { # do something say $date->ymd; } sub date_iterator { my %arg = @_; my $base = delete $arg{base}; my $during = delete $arg{during}; my $sign = $during / abs($during); $during = $sign * $during; my $i = -1; sub { $i++; return unless $i < $during; $base + $sign * ONE_DAY * $i; }; }