NAME¶
Sort::Key::Multi - simple multikey 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¶
Sort::Key::Multi creates multikey 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 instace:
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;
SEE ALSO¶
For a more general multikey sorter generator see Sort::Key::Maker.
COPYRIGHT AND LICENSE¶
Copyright (C) 2006 by Salvador Fandin~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.