Debian::Dpkg::Version - handling and comparing dpkg-style version numbers
The Debian::Dpkg::Version module provides pure-Perl routines to compare dpkg-style version numbers (as used in Debian packages) and also an object oriented interface overriding perl operators to do the right thing when you compare Debian::Dpkg::Version object between them.
Create a new Debian::Dpkg::Version object corresponding to the version indicated in the string (scalar) $version. By default it will accepts any string and consider it as a valid version. If you pass the option "check => 1", it will return undef if the version is invalid (see version_check for details).
You can always call $v->is_valid() later on to verify that the version is valid.
Returns true if the version is valid, false otherwise.
Returns the corresponding part of the full version string.
Numerical comparison of various versions numbers. One of the two operands needs to be a Debian::Dpkg::Version, the other one can be anything provided that its string representation is a version number.
Returns the string representation of the version number.
All the functions are exported by default.
Returns -1 is $a is smaller than $b, 0 if they are equal and 1 if $a is bigger than $b.
If $a or $b are not valid version numbers, it dies with an error.
Returns the result (0 or 1) of the given comparison operation. This function is implemented on top of version_compare().
Allowed values for $rel are the exported constants REL_GT, REL_GE, REL_EQ, REL_LE, REL_LT. Use version_normalize_relation() if you have an input string containing the operator.
Returns the normalized constant of the relation $rel (a value among REL_GT, REL_GE, REL_EQ, REL_LE and REL_LT). Supported relations names in input are: "gt", "ge", "eq", "le", "lt", ">>", ">=", "=", "<=", "<<". ">" and "<" are also supported but should not be used as they are obsolete aliases of ">=" and "<=".
String comparison function used for comparing non-numerical parts of version numbers. Returns -1 is $a is smaller than $b, 0 if they are equal and 1 if $a is bigger than $b.
The "~" character always sort lower than anything else. Digits sort lower than non-digits. Among remaining characters alphabetic characters (A-Za-z) sort lower than the other ones. Within each range, the ASCII decimal value of the character is used to sort between characters.
Compare two corresponding sub-parts of a version number (either upstream version or debian revision).
Each parameter is split by version_split_digits() and resulting items are compared together.in digits and non-digits items that are compared together. As soon as a difference happens, it returns -1 if $a is smaller than $b, 0 if they are equal and 1 if $a is bigger than $b.
Splits a string in items that are each entirely composed either of digits or of non-digits. For instance for "1.024~beta1+svn234" it would return ("1", ".", "024", "~beta", "1", "+svn", "234").
Checks the validity of $version as a version number. Returns 1 in $ok if the version is valid, 0 otherwise. In the latter case, $msg contains a description of the problem with the $version scalar.
Don Armstrong <email@example.com>,
Colin Watson <firstname.lastname@example.org> and Raphaël Hertzog <email@example.com>,
based on the implementation in
dpkg/lib/vercmp.c by Ian Jackson and others.