Unix/Linux Go Back    


CentOS 7.0 - man page for sort::versions (centos section 3)

Linux & Unix Commands - Search Man Pages
Man Page or Keyword Search:   man
Select Man Page Set:       apropos Keyword Search (sections above)


Versions(3)		       User Contributed Perl Documentation		      Versions(3)

NAME
       Sort::Versions - a perl 5 module for sorting of revision-like numbers

SYNOPSIS
	       use Sort::Versions;
	       @l = sort { versioncmp($a, $b) } qw( 1.2 1.2.0 1.2a.0 1.2.a 1.a 02.a );

	       ...

	       use Sort::Versions;
	       print 'lower' if versioncmp('1.2', '1.2a') == -1;

	       ...

	       use Sort::Versions;
	       %h = (1 => 'd', 2 => 'c', 3 => 'b', 4 => 'a');
	       @h = sort { versioncmp($h{$a}, $h{$b}) } keys %h;

DESCRIPTION
       Sort::Versions allows easy sorting of mixed non-numeric and numeric strings, like the
       'version numbers' that many shared library systems and revision control packages use. This
       is quite useful if you are trying to deal with shared libraries. It can also be applied to
       applications that intersperse variable-width numeric fields within text. Other
       applications can undoubtedly be found.

       For an explanation of the algorithm, it's simplest to look at these examples:

	 1.1   <  1.2
	 1.1a  <  1.2
	 1.1   <  1.1.1
	 1.1   <  1.1a
	 1.1.a <  1.1a
	 1     <  a
	 a     <  b
	 1     <  2
	 1.1-3 <  1.1-4
	 1.1-5 <  1.1.6

       More precisely (but less comprehensibly), the two strings are treated as subunits
       delimited by periods or hyphens. Each subunit can contain any number of groups of digits
       or non-digits. If digit groups are being compared on both sides, a numeric comparison is
       used, otherwise a ASCII ordering is used. A group or subgroup with more units will win if
       all comparisons are equal.  A period binds digit groups together more tightly than a
       hyphen.

       Some packages use a different style of version numbering: a simple real number written as
       a decimal. Sort::Versions has limited support for this style: when comparing two subunits
       which are both digit groups, if either subunit has a leading zero, then both are treated
       like digits after a decimal point. So for example:

	 0002  <  1
	 1.06  <  1.5

       This won't always work, because there won't always be a leading zero in real-number style
       version numbers. There is no way for Sort::Versions to know which style was intended. But
       a lot of the time it will do the right thing. If you are making up version numbers, the
       style with (possibly) more than one dot is the style to use.

USAGE
       The function "versioncmp()" takes two arguments and compares them like "cmp".  With perl
       5.6 or later, you can also use this function directly in sorting:

	   @l = sort versioncmp qw(1.1 1.2 1.0.3);

       The function "versions()" can be used directly as a sort function even on perl 5.005 and
       earlier, but its use is deprecated.

AUTHOR
       Ed Avis <ed@membled.com> and Matt Johnson <mwj99@doc.ic.ac.uk> for recent releases; the
       original author is Kenneth J. Albanowski <kjahds@kjahds.com>.  Thanks to Hack Kampbjorn
       and Slaven Rezic for patches and bug reports.

       Copyright (c) 1996, Kenneth J. Albanowski. All rights reserved.	This program is free
       software; you can redistribute it and/or modify it under the same terms as Perl itself.

POD ERRORS
       Hey! The above document had some coding errors, which are explained below:

       Around line 141:
	   Non-ASCII character seen before =encoding in 'Kampbjorn'. Assuming UTF-8

perl v5.16.3				    2003-08-24				      Versions(3)
Unix & Linux Commands & Man Pages : ©2000 - 2018 Unix and Linux Forums


All times are GMT -4. The time now is 05:38 PM.