logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

Sort::Key::Multi - simple multi-key sorts

Description

       Sort::Key::Multi creates multi-key sorting subroutines and exports them to the caller package.

       The names of the sorters are of the form "xxxkeysort" or "xxxkeysort_inplace", where "xxx" determines the
       number and types of the keys as follows:

           + "i" indicates an integer key, "u" indicates an unsigned integer key, "n" indicates a numeric key,
           "s" indicates a string key and "l" indicates a string key that obeys locale order configuration.

           + Type characters can be prefixed by "r" to indicate reverse order.

           + A number following a type character indicates that the key type has to be repeated as many times
           (for instance "i3" is equivalent to "iii" and "rs2" is equivalent to "rsrs").

           + Underscores ("_") can be freely used between type indicators.

       For instance:

          use Key::Sort::Multi qw(iirskeysort
                                  i2rskeysort
                                  i_i_rs__keysort
                                  i2rs_keysort);

       exports to the caller package fourth identical sorting functions that take two integer keys that are
       sorted in ascending order and one string key that is sorted in descending order.

       The generated sorters take as first argument a subroutine that is used to extract the keys from the
       values which are passed inside $_, for example:

         my @data = qw(1.3.foo 1.3.bar 2.3.bar 1.4.bar 1.7.foo);
         my @s = i2rs_keysort { split /\./, $_ } @data;

Name

       Sort::Key::Multi - simple multi-key sorts

See Also

       For a more general multi-key sorter generator see Sort::Key::Maker.

Synopsis

           use Sort::Key::Multi qw(sikeysort);
           my @data = qw(foo0 foo1 bar34 bar0 bar34 bar33 doz4)
           my @sisorted = sikeysort { /(\w+)(\d+)/} @data;

See Also