develooper Front page | perl.perl6.users | Postings from June 2018

Re: need sort help

Thread Previous
From:
ToddAndMargo
Date:
June 9, 2018 03:14
Subject:
Re: need sort help
Message ID:
5197ad69-f5ae-6e69-8a34-61926cec0f31@zoho.com
 >>     On Fri, Jun 8, 2018 at 6:50 PM, ToddAndMargo <ToddAndMargo@zoho.com
 >>     <mailto:ToddAndMargo@zoho.com>> wrote:
 >>
 >>                 On Fri, Jun 8, 2018 at 5:15 PM, ToddAndMargo
 >>                 <ToddAndMargo@zoho.com <mailto:ToddAndMargo@zoho.com>
 >>                 <mailto:ToddAndMargo@zoho.com
 >>                 <mailto:ToddAndMargo@zoho.com>>> wrote:
 >>
 >>                      Hi All,
 >>
 >>                 https://docs.perl6.org/routine/sort
 >>                 <https://docs.perl6.org/routine/sort>
 >>                      <https://docs.perl6.org/routine/sort
 >>                 <https://docs.perl6.org/routine/sort>>
 >>
 >>                      How do I fix this?
 >>
 >>                      $ ls | perl6 -e 'my @x=slurp(); say @x.sort'
 >>                      (log.06-08-2018_16:07:39.zip
 >>                      log.06-08-2018_17:07:39.zip
 >>                      log.07-08-2018_06:07:39.zip
 >>                      log.07-08-2018_16:07:39.zip
 >>                      log.12-08-2016_06:07:39.zip
 >>                      )
 >>
 >>
 >>                      2016 should be at the top.
 >>
 >>
 >>                      Many thanks,
 >>                      -T
 >>
 >>
 >>         On 06/08/2018 06:23 PM, Brent Laabs wrote:
 >>
 >>             Rename all of the input files using ISO 8601 dates.  I can't
 >>             tell, from looking at those numbers, if the first field is
 >>             the month or the day, so it's impossible to sort data like
 >>             that with certainty.
 >>
 >>
 >>         That is the way the files come.
 >>
 >>         The convention being used is
 >>              month, day, year, hour, minute, second
 >>
 >>

 >> On Fri, Jun 8, 2018 at 6:59 PM, Brent Laabs <bslaabs@gmail.com
 >> <mailto:bslaabs@gmail.com>> wrote:
 >>
 >>     If possible, you should change the way the files come, or rename
 >>     them when you get them, or open an issue to use a proper output log
 >>     format.
 >>
 >>     I mean, you can sort like:
 >>     @x.sort: {
 >>        my $a = $^a ~~ m:g/\d+/;
 >>        my $b = $^b ~~ m:g/\d+/;
 >>        $a[6].defined cmp $b[6].defined
 >>        ??
 >>        || $a[3] cmp $b[3]
 >>        || $a[1] cmp $b[1]
 >>        || $a[2] cmp $b[2]
 >>        || $a[4] cmp $b[4]
 >>        || $a[5] cmp $b[5]
 >>        || $a[6] cmp $b[6]
 >>        || $a cmp $b
 >>        !! $a cmp $b
 >>     };
 >>
 >>     You could make this more efficient with a Schwartzian transform so
 >>     you don't regex at every step.
 >>
 >>     But seriously, the problem is in the program that produces log files
 >>     that are hard to sort.  Why would someone do that?

On 06/08/2018 07:00 PM, Brent Laabs wrote:
 > let me revise that
 >
 > @x.sort: {
 >    my $a = $^a ~~ m:g/\d+/;
 >    my $b = $^b ~~ m:g/\d+/;
 >    $a[6].defined cmp $b[6].defined
 >    ??
 >      $a[3] cmp $b[3]
 >    || $a[1] cmp $b[1]
 >    || $a[2] cmp $b[2]
 >    || $a[4] cmp $b[4]
 >    || $a[5] cmp $b[5]
 >    || $a[6] cmp $b[6]
 >    || $^a cmp $^b
 >    !! $^a cmp $^b
 > };
 >
 >

Not sure what I am looking at.  :'(

Thread Previous


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About