This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Upgrade version from version 0.9908 to 0.9909
[perl5.git] / cpan / version / lib / version.pm
1 #!perl -w
2 package version;
3
4 use 5.006002;
5 use strict;
6
7 use vars qw(@ISA $VERSION $CLASS $STRICT $LAX *declare *qv);
8
9 $VERSION = 0.9909;
10 $CLASS = 'version';
11
12 # avoid using Exporter
13 require version::regex;
14 *version::is_lax = \&version::regex::is_lax;
15 *version::is_strict = \&version::regex::is_strict;
16 *LAX = \$version::regex::LAX;
17 *STRICT = \$version::regex::STRICT;
18
19 sub import {
20     no strict 'refs';
21     my ($class) = shift;
22
23     # Set up any derived class
24     unless ($class eq $CLASS) {
25         local $^W;
26         *{$class.'::declare'} =  \&{$CLASS.'::declare'};
27         *{$class.'::qv'} = \&{$CLASS.'::qv'};
28     }
29
30     my %args;
31     if (@_) { # any remaining terms are arguments
32         map { $args{$_} = 1 } @_
33     }
34     else { # no parameters at all on use line
35         %args =
36         (
37             qv => 1,
38             'UNIVERSAL::VERSION' => 1,
39         );
40     }
41
42     my $callpkg = caller();
43
44     if (exists($args{declare})) {
45         *{$callpkg.'::declare'} =
46             sub {return $class->declare(shift) }
47           unless defined(&{$callpkg.'::declare'});
48     }
49
50     if (exists($args{qv})) {
51         *{$callpkg.'::qv'} =
52             sub {return $class->qv(shift) }
53           unless defined(&{$callpkg.'::qv'});
54     }
55
56     if (exists($args{'UNIVERSAL::VERSION'})) {
57         local $^W;
58         *UNIVERSAL::VERSION
59                 = \&{$CLASS.'::_VERSION'};
60     }
61
62     if (exists($args{'VERSION'})) {
63         *{$callpkg.'::VERSION'} = \&{$CLASS.'::_VERSION'};
64     }
65
66     if (exists($args{'is_strict'})) {
67         *{$callpkg.'::is_strict'} = \&{$CLASS.'::is_strict'}
68           unless defined(&{$callpkg.'::is_strict'});
69     }
70
71     if (exists($args{'is_lax'})) {
72         *{$callpkg.'::is_lax'} = \&{$CLASS.'::is_lax'}
73           unless defined(&{$callpkg.'::is_lax'});
74     }
75 }
76
77
78 1;