# parrot future to look at other types of modules).
use strict;
-use vars qw($VERSION);
+use vars qw($VERSION $V_CLASS);
$VERSION = '1.000010';
$VERSION = eval $VERSION;
use Carp qw/croak/;
use File::Spec;
use IO::File;
-use version 0.87;
+use version;
+BEGIN {
+ $V_CLASS = 'version';
+ unless (eval { version->VERSION(0.87) }) {
+ require version::fallback;
+ version::fallback->VERSION(0.87);
+ version::fallback->import;
+ $V_CLASS = 'version::fallback';
+ }
+}
BEGIN {
if ($INC{'Log/Contextual.pm'}) {
Log::Contextual->import('log_info');
my $compare_versions = sub {
my ($v1, $op, $v2) = @_;
- $v1 = version->new($v1)
- unless UNIVERSAL::isa($v1,'version');
+ $v1 = $V_CLASS->new($v1)
+ unless UNIVERSAL::isa($v1,$V_CLASS);
my $eval_str = "\$v1 $op \$v2";
my $result = eval $eval_str;
if ( $version =~ /[=<>!,]/ ) { # logic, not just version
# take as is without modification
}
- elsif ( ref $version eq 'version' ) { # version objects
+ elsif ( ref $version eq $V_CLASS ) { # version objects
$version = $version->is_qv ? $version->normal : $version->stringify;
}
elsif ( $version =~ /^[^v][^.]*\.[^.]+\./ ) { # no leading v, multiple dots
$pn++; # everybody gets their own package
my $eval = qq{BEGIN { q# Hide from _packages_inside()
#; package Module::Metadata::_version::p$pn;
- use version;
+ use $V_CLASS;
no strict;
\$vsub = sub {
sub _dwim_version {
my ($result) = shift;
- return $result if ref($result) eq 'version';
+ return $result if ref($result) eq $V_CLASS;
my ($version, $error);
for my $f (@version_prep) {
$result = $f->($result);
- $version = eval { version->new($result) };
+ $version = eval { $V_CLASS->new($result) };
$error ||= $@ if $@; # capture first failure
last if defined $version;
}