But alas, even though you mention it in the title, and once in the body, you never got to it. Just the GRT, and Tye's particular trick.
I still think that the ST is always clearer than the GRT, and that jumping to the GRT without careful consideration is a case of premature optimization—except for those rare cases where the work required to wiggle your data into a single sortable string isn't all that unobvious.
By contrast, here's "sort a list of IP addresses" using the ST:
Quite a bit shorter than your code, and far less trickery and magic.my @sorted = map $_->[0], sort { $a->[1] <=> $b->[1] or $a->[2] <=> $b->[2] or $a->[3] <=> $b->[3] or $a->[4] <=> $b->[4] } map [$_, split /\./], @inputs;
So, it's too bad your title is a letdown. Good analysis, otherwise.
-- Randal L. Schwartz, Perl hacker
Be sure to read my standard disclaimer if this is a reply.
In reply to Re: Understanding transformation sorts (ST, GRT), the details
by merlyn
in thread Understanding transformation sorts (ST, GRT), the details
by 5mi11er
For: | Use: | ||
& | & | ||
< | < | ||
> | > | ||
[ | [ | ||
] | ] |