use Sort::Key::Types qw(register_type); register_type(Color => sub { $_->R, $_->G, $_->B }, qw(int, int, int)); # you better # use Sort::Key::Register ...
&gensubkeys should convert the object of type $name passed on $_ to a list of values composing the multi-key.
@subkeystypes is the list of types for the generated multi-keys.
For instance:
Sort::Key::Types::register_type 'Person', sub { $_->surname, $_->name, $_->middlename }, qw(str str str); Sort::Key::Types::register_type 'Color', sub { $_->R, $_->G, $_->B }, qw(int int int);
Once a datatype has been registered it can be used in the same way as types supported natively, even for defining new types, i.e.:
Sort::Key::Types::register_type 'Family', sub { $_->father, $_->mother }, qw(Person Person);
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.4 or, at your option, any later version of Perl 5 you may have available.