in reply to Re: Date comparison
in thread Date comparison

ehdonon ++ this is by far the easiest solution, and worth spelling out so that it doesn't get lost in the subsequent controversy
use Date::Parse; my @dates = qw[ 02/03/08 02/04/02 3:00pm 4:00am ]; my @sorted = sort {str2time($a) <=> str2time($b)} @dates; print $_,"\n" for @sorted; __END__ 02/04/02 4:00am 3:00pm 02/03/08
- n.b. times are assumed to be *today* unless date is specified. This will handle a variety of different date / time formats.

§ George Sherston

Replies are listed 'Best First'.
Re: Re: Re: Date comparison
by dws (Chancellor) on Jul 05, 2002 at 23:07 UTC
    Since str2time() is a relatively expensive routine, this a perfect time for pulling out the "Orcish Maneuver".

    In the example above, change   my @sorted = sort {str2time($a) <=> str2time($b)} @dates; to

    my %cache; my @sorted = sort {($cache{$a} ||= str2time($a)) <=> ($cache{$b} ||= str2time($b)) } @dates;

        But why "orcish"?

        The Orcish Maneuver gets its name from the use of the "or" assignment operator (||=) to "cache" values within a Schwartzian transform. "or" + "cache" --> "orcish".