Commit | Line | Data |
b972f109 |
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 | |