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
};


On Fri, Jun 8, 2018 at 6:59 PM, Brent Laabs <bsla...@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 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