Module version descriptor
Version objects identify version of software components (and potentially other entities). Perl 6 uses them internally for versioning modules.
A version consists of several parts, which are visually represented by joining them with a dot. A version part is usually an integer, a string like
alpha, or a Whatever-star
*. The latter is used to indicate that any version part is acceptable in another version that is compared to the current one.
say v1.0.1 ~~ v1.*; # OUTPUT: «True␤»
Version literals can only contain numeric and Whatever parts. They start with a lower-case
v, and are followed by at least one part. Multiple parts are separate with a dot
.. A trailing
+ indicates that higher versions are OK in comparisons:
say v1.2 ~~ v1.0; # OUTPUT: «False␤»say v1.2 ~~ v1.0+; # OUTPUT: «True␤»
In comparisons, early parts take precedence over later parts.
say v1.2 cmp v2.1; # OUTPUT: «Less␤»
Please note that method calls, including pseudo methods like
WHAT require version literals to be enclosed with parentheses.
method new(Str )
Creates a Version from a string
$s. The string is combed for the numeric, alphabetic, and wildcard components of the version object. Any characters other than alphanumerics and asterisks are assumed to be equivalent to a dot. A dot is also assumed between any adjacent numeric and alphabetic characters.
method parts(Version: --> List)
Returns the list of parts that make up this Version object
my = v1.0.1;my = v1.0.1+;say .parts; # OUTPUT: «(1 0 1)␤»say .parts; # OUTPUT: «(1 0 1)␤»
method plus(Version: --> Bool)
True if comparisons against this version allow larger versions too.
my = v1.0.1;my = v1.0.1+;say .plus; # OUTPUT: «False␤»say .plus; # OUTPUT: «True␤»
method Str(Version: --> Str)
Returns a string representation of the invocant.
my = v1.0.1;my = Version.new('1.0.1');say .Str; # OUTPUT: «1.0.1␤»say .Str; # OUTPUT: «1.0.1␤»
method gist(Version: --> Str)
Returns a string representation of the invocant, just like Str, prepended with a lower-case
my = v1.0.1;my = Version.new('1.0.1');say .gist; # OUTPUT: «v1.0.1␤»say .gist; # OUTPUT: «v1.0.1␤»