#!perl -w package version; use 5.005_04; use strict; use vars qw(@ISA $VERSION $CLASS *declare *qv); $VERSION = 0.77; $CLASS = 'version'; # Preloaded methods go here. sub import { no strict 'refs'; my ($class) = shift; # Set up any derived class unless ($class eq 'version') { local $^W; *{$class.'::declare'} = \&version::declare; *{$class.'::qv'} = \&version::qv; } my %args; if (@_) { # any remaining terms are arguments map { $args{$_} = 1 } @_ } else { # no parameters at all on use line %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{'VERSION'})) { *{$callpkg."::VERSION"} = \&version::_VERSION; } } 1;