Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
Sort::Sub(3)	      User Contributed Perl Documentation	  Sort::Sub(3)

NAME
       Sort::Sub - Collection of sort subroutines

VERSION
       This document describes version 0.120 of	Sort::Sub (from	Perl
       distribution Sort-Sub), released	on 2020-05-25.

SYNOPSIS
	use Sort::Sub qw($naturally);

	my @sorted = sort $naturally ('track1.mp3', 'track10.mp3', 'track2.mp3', 'track1b.mp3',	'track1a.mp3');
	# => ('track1.mp3', 'track1a.mp3', 'track1b.mp3', 'track2.mp3',	'track10.mp3')

       Request as subroutine:

	use Sort::Sub qw(naturally);

	my @sorted = sort {naturally} (...);

       Request a reverse sort:

	use Sort::Sub qw($naturally<r>);

	my @sorted = sort $naturally (...);
	# => ('track10.mp3', 'track2.mp3', 'track1b.mp3', 'track1a.mp3', 'track1.mp3')

       Request a case-insensitive sort:

	use Sort::Sub qw($naturally<i>);

	my @sorted = sort $naturally (...);

       Request a case-insensitive, reverse sort:

	use Sort::Sub qw($naturally<ir>);

	my @sorted = sort $naturally ('track2.mp3', 'Track1.mp3', 'Track10.mp3');
	=> ('Track10.mp3', 'track2.mp3', 'Track1.mp3')

       Pass arguments to sort generator	routine:

	use Sort::Sub '$by_num_of_colons', {pattern=>':'};

	my @sorted = sort $by_num_of_colons ('a::','b:','c::::','d:::');
	=> ('b:','a::','d:::','c::::')

       Request a coderef directly, without using the import interface:

	use Sort::Sub;

	my $naturally =	Sort::Sub::get_sorter('naturally');
	my $naturally =	Sort::Sub::get_sorter('$naturally');
	my $rev_naturally = Sort::Sub::get_sorter('naturally<r>');

DESCRIPTION
       Sort::Sub and "Sort::Sub::*" are	a convenient packaging of any kind of
       subroutine which	you can	use for	"sort()".

       To use Sort::Sub, you import a list of:

	["$"]NAME [ "<"	[i][r] ">" ]

       Where NAME is actually searched under "Sort::Sub::*" namespace. For
       example:

	naturally

       will attempt to load "Sort::Sub::naturally" module and call its
       "gen_sorter" subroutine.

       You can either request a	subroutine name	like the above or a variable
       name (e.g.  $naturally).

       After the name, you can add some	options, enclosed with angle brackets
       "<>". There are some known options, e.g.	"i" (for case-insensitive
       sort) or	"r" (for reverse sort).	Some examples:

	naturally<i>
	naturally<r>
	naturally<ri>

GUIDELINES FOR WRITING A SORT::SUB::* MODULE
       The name	should be in lowercase.	It should be an	adverb (e.g.
       "naturally") or a phrase	with words separated by	underscore ("_") and
       the phrase begins with "by" (e.g. "by_num_and_non_num_parts").

       The module must contain a "gen_sorter" subroutine. It will be called
       with:

	($is_reverse, $is_ci, $args)

       Where $is_reserve will be set to	true if	user requests a	reverse	sort,
       $is_ci will be set to true if user requests a case-insensitive sort.
       $args is	hashref	to pass	additional arguments to	the "gen_sorter()"
       routine.	The subroutine should return a code reference.

       The module should also contain a	"meta" subroutine which	returns	a
       metadata	DefHash. Known properties (keys) include: "v" (currently at
       1), "summary", "compares_record"	(bool, if set to true then sorter will
       be fed records "[$data, $order]"	instead	of just	$data; $order is a
       number that can be line number of array index; this allows sorter to
       sort by additional information instead of just the data items). Other
       metadata	properties will	be added in the	future.

FUNCTIONS
   get_sorter
       Usage:

	my $coderef = Sort::Sub::get_sorter('SPEC' [ , \%args [	, $with_meta ] ]);

       Example:

	my $rev_naturally = Sort::Sub::get_sorter('naturally<r>');

       This is an alternative to using the import interface. This function is
       not imported.

       If $with_meta is	set to true, will return this:

	($sorter, $meta)

       instead of just the $sorter subroutine.

HOMEPAGE
       Please visit the	project's homepage at
       <https://metacpan.org/release/Sort-Sub>.

SOURCE
       Source repository is at <https://github.com/perlancar/perl-Sort-Sub>.

BUGS
       Please report any bugs or feature requests on the bugtracker website
       <https://rt.cpan.org/Public/Dist/Display.html?Name=Sort-Sub>

       When submitting a bug or	request, please	include	a test-file or a patch
       to an existing test-file	that illustrates the bug or desired feature.

SEE ALSO
       Other additional	"Sort::Sub::*" not bundled in this distribution.

       Supporting CLI's: sortsub (from App::sortsub), sorted (from
       App::sorted), CLI's from	App::SortSubUtils.

AUTHOR
       perlancar <perlancar@cpan.org>

COPYRIGHT AND LICENSE
       This software is	copyright (c) 2020, 2019, 2018,	2016, 2015 by
       perlancar@cpan.org.

       This is free software; you can redistribute it and/or modify it under
       the same	terms as the Perl 5 programming	language system	itself.

perl v5.32.0			  2020-05-24			  Sort::Sub(3)

NAME | VERSION | SYNOPSIS | DESCRIPTION | GUIDELINES FOR WRITING A SORT::SUB::* MODULE | FUNCTIONS | HOMEPAGE | SOURCE | BUGS | SEE ALSO | AUTHOR | COPYRIGHT AND LICENSE

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=Sort::Sub&sektion=3&manpath=FreeBSD+12.2-RELEASE+and+Ports>

home | help