in reply to (Ovid) Re(2): Finding gaps in date ranges
in thread Finding gaps in date ranges
This stores the ranges...my $error = 0; my @gaps; my @tmp = sort datesort qw( 2000-4 2000-12 2001-1 2002-12 1999-12 ); my($year,$month) = split '-', $tmp[0]; for(my $i = 1; $i < @tmp; $i++) { my $gap = 0; my @range; do { $range[1] = "$year-$month"; if(++$month == 13) { $month = 1; $year++; } if($tmp[$i] ne "$year-$month") { $range[0] = "$year-$month" unless $gap; $gap++; $error = 1; } if($gap > 100) { print "ERROR! infinite loop\n"; last; } } until($tmp[$i] eq "$year-$month"); if($gap) { push @range, "$year-$month"; push @gaps, \@range; } } if($error) { for(@gaps) { print "Gap from $_->[0] to $_->[1]\n"; } } print "Success\n" unless $error; sub datesort { my($a1,$a2) = split '-', $a; my($b1,$b2) = split '-', $b; $a1 <=> $b1 or $a2 <=> $b2; }
|
|---|