Commit | Line | Data |
---|---|---|
b972f109 JH |
1 | #!/usr/bin/perl -w |
2 | ||
3 | # | |
4 | # Check the tree against missing VERSIONs. | |
5 | # | |
6 | # Originally by Larry Shatzer | |
7 | # | |
8 | ||
9 | use strict; | |
10 | use File::Find; | |
11 | ||
12 | find( | |
13 | sub { | |
14 | return unless -f; | |
15 | if (/\.pm$/ && $File::Find::name !~ m:/t/:) { # pm but not in a test | |
16 | unless (parse_file($_)) { | |
17 | print "$File::Find::name\n"; | |
18 | } | |
19 | } | |
20 | }, @ARGV ? shift : "."); | |
21 | ||
22 | sub parse_file { | |
23 | my $parsefile = shift; | |
24 | ||
25 | my $result; | |
26 | ||
27 | open(FH,$parsefile) or warn "Could not open '$parsefile': $!"; | |
28 | ||
29 | my $inpod = 0; | |
30 | while (<FH>) { | |
31 | $inpod = /^=(?!cut)/ ? 1 : /^=cut/ ? 0 : $inpod; | |
32 | next if $inpod || /^\s*\#/; | |
33 | chomp; | |
34 | next unless /([\$*])(([\w\:\']*)\bVERSION)\b.*\=/; | |
35 | my $eval = qq{ | |
36 | package ExtUtils::MakeMaker::_version; | |
37 | no strict; | |
38 | local $1$2; | |
39 | \$$2=undef; do { | |
40 | $_ | |
41 | }; \$$2 | |
42 | }; | |
43 | no warnings; | |
44 | $result = eval($eval); | |
45 | warn "Could not eval '$eval' in $parsefile: $@" if $@; | |
46 | $result = "undef" unless defined $result; | |
47 | last; | |
48 | } | |
49 | close FH; | |
50 | return $result; | |
51 | } | |
52 |