your list @x has only a single item, because you're slurping the whole
file contents into it.

replacing slurp with lines should do the trick.


On 09/06/18 07:23, ToddAndMargo wrote:
> On 06/08/2018 09:51 PM, Timo Paulssen wrote:
>> That's unnecessarily long and complicated, here's how you can do it much
>> easier:
>>
>>      @x.sort: {
>>          my ($month, $day, $year, $hour, $minute, $second) =
>> .comb(/\d+/);
>>          ($year // 0, $month // 0, $day // 0, $hour // 0, $minute // 0,
>> $second // 0, $_);
>>      }
>>
>> Trying it on some input data:
>>
>>      cimtrak.log.06-08-2018_16:07:39.zip
>>      cimtrak.log.06-08-2018_17:07:39.zip
>>      cimtrak.log.07-08-2018_06:07:39.zip
>>      cimtrak.log.07-08-2018_16:07:39.zip
>>      cimtrak.log.12-08-2016_06:07:39.zip
>>      cookies
>>      asbestos
>>      fire engine
>>      perl6
>>      butterflies
>>
>> results in:
>>
>>      asbestos
>>      butterflies
>>      cookies
>>      fire engine
>>      perl6
>>      cimtrak.log.12-08-2016_06:07:39.zip
>>      cimtrak.log.06-08-2018_16:07:39.zip
>>      cimtrak.log.06-08-2018_17:07:39.zip
>>      cimtrak.log.07-08-2018_06:07:39.zip
>>      cimtrak.log.07-08-2018_16:07:39.zip
>>
>> This is the schwartzian transform that was mentioned in another mail.
>> why it wasn't actually shown, i have no clue :)
>>
>> Hope that helps
>>    - Timo
>>
>
>
> What am I doing wrong?
>
> $ ls | perl6 -e 'my @x=slurp();  say @x.sort: {my ($month, $day,
> $year, $hour, $minute, $second) = .comb(/\d+/);($year // 0, $month //
> 0, $day // 0, $hour // 0, $minute // 0,$second // 0, $_);}'
> (cimtrak.log.06-08-2018_16:07:39.zip
> cimtrak.log.06-08-2018_17:07:39.zip
> cimtrak.log.07-08-2018_06:07:39.zip
> cimtrak.log.07-08-2018_16:07:39.zip
> cimtrak.log.12-08-2016_06:07:39.zip
> )

Reply via email to