#!/usr/bin/perl -w
#
# Check the tree against missing VERSIONs.
#
# Originally by Larry Shatzer
#
use strict;
use File::Find;
find(
sub {
return unless -f;
if (/\.pm$/ && $File::Find::name !~ m:/t/:) { # pm but not in a test
unless (parse_file($_)) {
print "$File::Find::name\n";
}
}
}, @ARGV ? shift : ".");
sub parse_file {
my $parsefile = shift;
my $result;
open(FH,$parsefile) or warn "Could not open '$parsefile': $!";
my $inpod = 0;
while (<FH>) {
$inpod = /^=(?!cut)/ ? 1 : /^=cut/ ? 0 : $inpod;
next if $inpod || /^\s*\#/;
chomp;
next unless /([\$*])(([\w\:\']*)\bVERSION)\b.*\=/;
my $eval = qq{
package ExtUtils::MakeMaker::_version;
no strict;
local $1$2;
\$$2=undef; do {
$_
}; \$$2
};
no warnings;
$result = eval($eval);
warn "Could not eval '$eval' in $parsefile: $@" if $@;
$result = "undef" unless defined $result;
last;
}
close FH;
return $result;
}
|