Softpedia
 


LINUX CATEGORIES:



GLOBAL PAGES >>
NEWS ARCHIVE >>
SOFTPEDIA REVIEWS >>
MEET THE EDITORS >>
WEEK'S BEST
  • Linux Kernel 3.9.2 / 3....
  • LibreOffice 3.6.6 / 4.0.3
  • MPlayer 1.1.1
  • systemd 204
  • Arch Linux 2013.05.01
  • Blender 2.67
  • KDE Software Compilatio...
  • CrunchBang Linux Stable...
  • Elementary OS 0.1 / 0.2...
  • SystemRescueCd 3.6.0
  • Home > Linux > Programming > Libraries

    Sort::Versions 1.5

    Download button

    No screenshots available
    Downloads: 303  View global page NEW!  Tell us about an update
    User Rating:
    Rated by:
    NOT RATED
    0 user(s)
    Developer:

    License / Price:

    Last Updated:

    Category:
    Ed Avis and Matt Johnson | More programs
    Perl Artistic License / FREE
    May 22nd, 2007, 10:05 GMT
    ROOT / Programming / Libraries

     Read user reviews (0)  Refer to a friend  Subscribe

    Sort::Versions description

    Sort::Versions is a Perl 5 module for sorting of revision-like numbers.

    Sort::Versions is 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;

    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.

    Product's homepage

    Requirements:

    · Perl

      


    TAGS:

    sort numbers | revision-like numbers | Perl module | Sort::Versions | sort | numbers

    Go to top

    WindowsGamesDriversMacLinuxScriptsMobileHandheldNews

    SUBMIT PROGRAM   |   ADVERTISE   |   GET HELP   |   SEND US FEEDBACK   |   RSS FEEDS   |   UPDATE YOUR SOFTWARE   |   ROMANIAN FORUM