Sort::Key::Multi(3)

🌸 NAME 🌸

okay bestie, this is Sort::Key::Multi from the User Contributed Perl Documentation, section 3 β€” and it's literally all about simple multi-key sorts ✨


πŸš€ SYNOPSIS πŸš€

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

πŸ’– DESCRIPTION πŸ’–

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

The names of the sorters are of the form xxxkeysort or xxxkeysort_inplace, where xxx determines the number and types of the keys like this:

  • i β€” an integer key; u β€” an unsigned integer key; n β€” a numeric key; s β€” a string key; and l β€” 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 means that key type gets repeated that many times β€” for instance, i3 is equivalent to iii, and rs2 is equivalent to rsrs πŸ”₯
  • Underscores (_) can be freely used between type indicators, because apparently we're decorating πŸ’…

For instance:

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

This 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. Yes bestie, fourth β€” we're keeping the chaos exactly as written 😭

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;

πŸ‘€ SEE ALSO πŸ‘€

For a more general multi-key sorter generator see Sort::Key::Maker. iykyk πŸ¦‹

Copyright (C) 2006, 2014 by Salvador FandiΓ±o <sfandino@yahoo.com>

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.


okay that's the whole vibe πŸ’… β€” this page is from perl v5.42.0, dated 2015-04-14, and it's the Sort::Key::Multi(3) manual. mwah 🫢

πŸ“¦ where this page comes from