# by Ken Estes Mail.com kestes@staff.mail.com
+$HAVE_VERSION = 0;
+eval { require version; $HAVE_VERSION = 1; };
+
+
if ("@ARGV") {
foreach (@ARGV) {
process_file($_);
+sub add_require {
+ my ($module, $newver) = @_;
+ my $oldver = $require{$module};
+ if ($oldver) {
+ $require{$module} = $newver
+ if ($HAVE_VERSION && $newver && version->new($oldver) < $newver);
+ }
+ else {
+ $require{$module} = $newver;
+ }
+}
+
sub process_file {
my ($file) = @_;
# use base qw(Foo) dependencies
if ($statement eq "use" && $module eq "base") {
- $require{$module} ||= undef;
+ add_require($module, undef);
if ($version =~ /^qw\s*[(\/]\s*([^)\/]+?)\s*[)\/]/) {
- $require{$_} ||= undef for split(' ', $1);
+ add_require($_, undef) for split(' ', $1);
}
elsif ($version =~ /(["'])([^"']+)\1/) {
- $require{$2} ||= undef;
+ add_require($2, undef);
}
next;
}
$version = undef unless $version =~ /^$modver_re$/o;
- $require{$module} ||= $version;
+ add_require($module, $version);
}
}