If the date format is followed rigidly, with leading 0 for single digit months and days, then a simple alpha sort will work. Since you want reverse order, I'll show how to get that from the sort routine.

my @sorted = sort { $b->[0] cmp $a->[0] } @data;

The $b value is on the left to induce reverse order.

If the date format is not so rigidly observed, you can either rewrite it internally to conform to the format, or else do the sort the hard way. That uses a numerical comparison of years, if same then months if same then days:

my @sorted = sort { my @b = split '-', $b->[0]; my @a = split '-', $a->[0]; $b[0] <=> $a[0] || $b[1] <=> $a[1] || $b[2] <=> $a[2]; } @data;

Hope this helps.

After Compline,
Zaxo


In reply to Re: Sorting an array by dates in a field... by Zaxo
in thread Sorting an array by dates in a field... by Speedfreak

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.