diff options
Diffstat (limited to 'Porting/checkVERSION.pl')
-rw-r--r-- | Porting/checkVERSION.pl | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/Porting/checkVERSION.pl b/Porting/checkVERSION.pl new file mode 100644 index 0000000000..9ad2ff54d8 --- /dev/null +++ b/Porting/checkVERSION.pl @@ -0,0 +1,52 @@ +#!/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; +} + |