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 Fri, Jun 8, 2018 at 6:50 PM, ToddAndMargo <toddandma...@zoho.com> wrote:

> On Fri, Jun 8, 2018 at 5:15 PM, ToddAndMargo <toddandma...@zoho.com
>>> <mailto:toddandma...@zoho.com>> wrote:
>>>
>>>     Hi All,
>>>
>>>     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
>

Reply via email to