Alien-Build
view release on metacpan or search on metacpan
lib/Alien/Build/Version/Basic.pm view on Meta::CPAN
package Alien::Build::Version::Basic;
use strict;
use warnings;
use 5.008004;
use Carp ();
use Exporter qw( import );
use overload
'<=>' => sub { shift->cmp(@_) },
'cmp' => sub { shift->cmp(@_) },
'""' => sub { shift->as_string },
bool => sub { 1 },
fallback => 1;
our @EXPORT_OK = qw( version );
# ABSTRACT: Very basic version object for Alien::Build
our $VERSION = '2.84'; # VERSION
sub new
{
my($class, $value) = @_;
$value =~ s/\.$//; # trim trailing dot
Carp::croak("invalud version: $value")
unless $value =~ /^[0-9]+(\.[0-9]+)*$/;
bless \$value, $class;
}
sub version ($)
{
my($value) = @_;
__PACKAGE__->new($value);
}
sub as_string
{
my($self) = @_;
"@{[ $$self ]}";
}
sub cmp
{
my @x = split /\./, ${$_[0]};
my @y = split /\./, ${ref($_[1]) ? $_[1] : version($_[1])};
while(@x or @y)
{
my $x = (shift @x) || 0;
my $y = (shift @y) || 0;
return $x <=> $y if $x <=> $y;
}
0;
}
1;
__END__
=pod
=encoding UTF-8
=head1 NAME
Alien::Build::Version::Basic - Very basic version object for Alien::Build
=head1 VERSION
version 2.84
=head1 SYNOPSIS
OO interface:
use Alien::Build::Version::Basic;
my $version = Alien::Build::Version::Basic->new('1.2.3');
if($version > '1.2.2') # true
{
...
}
( run in 0.579 second using v1.01-cache-2.11-cpan-172d661cebc )