Sort::Key::Natural - fast natural sorting |
Sort::Key::Natural - fast natural sorting
use Sort::Key::Natural qw(natsort);
my @data = qw(foo1 foo23 foo6 bar12 bar1 foo bar2 bar-45 foomatic b-a-r-45);
my @sorted = natsort @data;
print "@sorted\n"; # prints: # b-a-r-45 bar1 bar2 bar12 bar-45 foo foo1 foo6 foo23 foomatic
use Sort::Key::Natural qw(natkeysort);
my @objects = (...); my @sorted = natkeysort { $_->get_id } @objects;
This module extends the the Sort::Key manpage family of modules to support natural sorting.
Under natural sorting, strings are splitted at word and number boundaries, and the resulting substrings are compared as follows:
Spaces, symbols and non-printable characters are only considered for
splitting the string into its parts but not for sorting. For instance
foo-bar-42
is broken in three substrings foo
, bar
and 42
and after that the dashes are ignored.
Also, once this module is loaded, the new type natural
(or nat
) will
be available from the Sort::Key::Maker manpage. For instance:
use Sort::Key::Natural; use Sort::Key::Maker i_rnat_keysort => qw(integer -natural);
creates a multikey sorter i_rnat_keysort
accepting two keys, the
first to be compared as an integer and the second in natural
descending order.
the functions that can be imported from this module are:
@data
sorted in natural order.
@data
sorted in natural descending order.
CALC_KEY($_)
} @data@array
naturally sorted by the keys
resulting from applying them CALC_KEY
.
CALC_KEY($_)
} @datanatkeysort
but sorts the elements in descending
order.
CALC_KEY($_)
} @dataCALC_KEY($_)
} @datanatsort
, rnatsort
,
natsortkey
and rnatsortkey
, but they sort the array @data
in
place.
$key
in a way that when sorted with the Sort::Key manpage
keysort results in a natural sort. If the argument $key
is not
provided it defaults to $_
the Sort::Key manpage, the Sort::Key::Maker manpage.
Other module providing similar functionality is the Sort::Naturally manpage.
Copyright (C) 2006 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.
Sort::Key::Natural - fast natural sorting |