DateTimeで処理する方がいいんじゃないかな? @dts作る時にmap使いたかったんだけど、あり得ない日付の時のこと考えるとundef入っちゃうからできなかった use strict; use warnings; use utf8; use DateTime; use DateTime::Format::Strptime;
my @date = qw( 23-001-2009 25-001-2009 26-001-2009 28-001-2009 29-001-2009 30-001-2009 01-002-2009 03-002-2010 30-002-2010 31-002-2010 ); my $pattern = '%d-0%m-%Y'; my $fmt = DateTime::Format::Strptime->new( pattern => $pattern, time_zone => 'Asia/Tokyo', ); my @dts; for (@date) { my $dt = $fmt->parse_datetime($_); push @dts, $dt if $dt; } my @res_dts; my $pre_dt; for my $i (0 .. $#dts) { my $dt = $dts[$i];