#!perl -w
use
5.006002;
if
($] >= 5.015) {
warnings::register_categories(
qw/version/
);
}
our
$VERSION
=
'0.9933'
;
our
$CLASS
=
'version'
;
our
(
@ISA
,
$STRICT
,
$LAX
);
{
local
$SIG
{
'__DIE__'
};
eval
"use version::vxs $VERSION"
;
if
( $@ ) {
eval
"use version::vpp $VERSION"
;
die
"$@"
if
( $@ );
push
@ISA
,
"version::vpp"
;
local
$^W;
*version::qv
= \
&version::vpp::qv
;
*version::declare
= \
&version::vpp::declare
;
*version::_VERSION
= \
&version::vpp::_VERSION
;
*version::vcmp
= \
&version::vpp::vcmp
;
*version::new
= \
&version::vpp::new
;
*version::numify
= \
&version::vpp::numify
;
*version::normal
= \
&version::vpp::normal
;
*version::to_decimal
= \
&version::vpp::to_decimal
;
*version::to_dotted_decimal
= \
&version::vpp::to_dotted_decimal
;
*version::tuple
= \
&version::vpp::tuple
;
*version::from_tuple
= \
&version::vpp::from_tuple
;
if
($] >= 5.009000) {
no
strict
'refs'
;
*version::stringify
= \
&version::vpp::stringify
;
*{
'version::(""'
} = \
&version::vpp::stringify
;
*{
'version::(<=>'
} = \
&version::vpp::vcmp
;
*{
'version::(cmp'
} = \
&version::vpp::vcmp
;
*version::parse
= \
&version::vpp::parse
;
}
}
else
{
push
@ISA
,
"version::vxs"
;
local
$^W;
*version::declare
= \
&version::vxs::declare
;
*version::qv
= \
&version::vxs::qv
;
*version::_VERSION
= \
&version::vxs::_VERSION
;
*version::vcmp
= \
&version::vxs::VCMP
;
*version::new
= \
&version::vxs::new
;
*version::numify
= \
&version::vxs::numify
;
*version::normal
= \
&version::vxs::normal
;
*version::to_decimal
= \
&version::vxs::to_decimal
;
*version::to_dotted_decimal
= \
&version::vxs::to_dotted_decimal
;
*version::tuple
= \
&version::vxs::tuple
;
*version::from_tuple
= \
&version::vxs::from_tuple
;
if
($] >= 5.009000) {
no
strict
'refs'
;
*version::stringify
= \
&version::vxs::stringify
;
*{
'version::(""'
} = \
&version::vxs::stringify
;
*{
'version::(<=>'
} = \
&version::vxs::VCMP
;
*{
'version::(cmp'
} = \
&version::vxs::VCMP
;
*version::parse
= \
&version::vxs::parse
;
}
}
}
*version::is_lax
= \
&version::regex::is_lax
;
*version::is_strict
= \
&version::regex::is_strict
;
*LAX
= \
$version::regex::LAX
;
*LAX_DECIMAL_VERSION
= \
$version::regex::LAX_DECIMAL_VERSION
;
*LAX_DOTTED_DECIMAL_VERSION
= \
$version::regex::LAX_DOTTED_DECIMAL_VERSION
;
*STRICT
= \
$version::regex::STRICT
;
*STRICT_DECIMAL_VERSION
= \
$version::regex::STRICT_DECIMAL_VERSION
;
*STRICT_DOTTED_DECIMAL_VERSION
= \
$version::regex::STRICT_DOTTED_DECIMAL_VERSION
;
sub
import
{
no
strict
'refs'
;
my
(
$class
) =
shift
;
unless
(
$class
eq
$CLASS
) {
local
$^W;
*{
$class
.
'::declare'
} = \&{
$CLASS
.
'::declare'
};
*{
$class
.
'::qv'
} = \&{
$CLASS
.
'::qv'
};
}
my
%args
;
if
(
@_
) {
map
{
$args
{
$_
} = 1 }
@_
}
else
{
%args
=
(
qv
=> 1,
'UNIVERSAL::VERSION'
=> 1,
);
}
my
$callpkg
=
caller
();
if
(
exists
(
$args
{declare})) {
*{
$callpkg
.
'::declare'
} =
sub
{
return
$class
->declare(
shift
) }
unless
defined
(&{
$callpkg
.
'::declare'
});
}
if
(
exists
(
$args
{qv})) {
*{
$callpkg
.
'::qv'
} =
sub
{
return
$class
->qv(
shift
) }
unless
defined
(&{
$callpkg
.
'::qv'
});
}
if
(
exists
(
$args
{
'UNIVERSAL::VERSION'
})) {
local
$^W;
*UNIVERSAL::VERSION
= \&{
$CLASS
.
'::_VERSION'
};
}
if
(
exists
(
$args
{
'VERSION'
})) {
*{
$callpkg
.
'::VERSION'
} = \&{
$CLASS
.
'::_VERSION'
};
}
if
(
exists
(
$args
{
'is_strict'
})) {
*{
$callpkg
.
'::is_strict'
} = \&{
$CLASS
.
'::is_strict'
}
unless
defined
(&{
$callpkg
.
'::is_strict'
});
}
if
(
exists
(
$args
{
'is_lax'
})) {
*{
$callpkg
.
'::is_lax'
} = \&{
$CLASS
.
'::is_lax'
}
unless
defined
(&{
$callpkg
.
'::is_lax'
});
}
}
1;