On Sun, 24 May 2020, Elizabeth Mattijsen wrote: > Hmmm... it appears we need to numerify the match to get numeric comparison > semantics, so we put a "+" before the match: > > $ raku -e 'my @x=<a5 a2 a123 a133 a1>.sort: { +m/ \d+ $/ }; for @x { say $_; > }' > a1 > a2 > a5 > a123 > a133 >
So I think this would be a more general "version sort" then, where the number doesn't have to be at the end only: @things.sort: { .comb(/ \d+ | \D+ /) .map({ .Int // .self }) } It does not conform to all the rules about natural sort on Rosetta Code [1] but I like how - longest-token matching, - .sort behavior on (differently-sized) tuples, and - .Int returning an (undefined) Failure work together here. Regards, Tobias [1] https://rosettacode.org/wiki/Natural_sorting -- "There's an old saying: Don't change anything... ever!" -- Mr. Monk