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; }
This stores the ranges...
                - Ant

In reply to Re: (Ovid) Re(2): Finding gaps in date ranges by suaveant
in thread Finding gaps in date ranges by Ovid

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.