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 > )