>>>>> "David" == David Jantzen <[EMAIL PROTECTED]> writes:

David>      # Now onto the magic of the ST: map/sort/map.  (Read from bottom
David> to top)

David>      print # the results of the inner map
David>      map {
David>         $_->[0][3] = UnixDate($_->[1], "%B %e, %Y"); # translate back
David> to our human readable date
David>         join(':', @{$_->[0]}), "\n"; # dereference the array
David> containing our values and join them together
David>      } sort {
David>          $category_table{$a->[0][1]} <=> $category_table{$b->[0][1]} #
David> sort on category
David>            || Date_Cmp($a->[0][3], $b->[1]) # or sort on date

if Date_Cmp is expensive, the dates should be decoded in the first
map block to an easier-to-compare analogue.  The whole point of the ST
is to keep the computations in the sort to an *absolute minimum*.

Also, the assymetry of $a->[0][3] and $b->[1] seems very very broken.
Every reference you make to $a in the sort block should have the *identical*
reference to $b.  Always.  Always.

David>      } map {
David>          chomp;
David>          my @row = split(/:/, $_);
David>          [EMAIL PROTECTED], ParseDate($row[3])]; # pass out an array of 
the @row
David> and dates to compare
David>      } @current_deals;

Just another sorting expert, :)

-- 
Randal L. Schwartz - Stonehenge Consulting Services, Inc. - +1 503 777 0095
<merlyn@stonehenge.com> <URL:http://www.stonehenge.com/merlyn/>
Perl/Unix/security consulting, Technical writing, Comedy, etc. etc.
See PerlTraining.Stonehenge.com for onsite and open-enrollment Perl training!

Reply via email to