Commit | Line | Data |
4a656c5e |
1 | #!perl |
2 | # Generates info for Module::CoreList from this perl tree |
3 | # run this from the root of a clean perl tree |
4 | |
5 | use 5.9.0; |
6 | use strict; |
7 | use warnings; |
8 | use File::Find; |
9 | use ExtUtils::MM_Unix; |
10 | |
11 | my @lines; |
12 | find(sub { |
13 | /(\.pm|_pm\.PL)$/ or return; |
14 | /PPPort_pm\.PL/ and return; |
15 | my $module = $File::Find::name; |
16 | $module =~ /\b(demo|t)\b/ and return; # demo or test modules |
17 | my $version = MM->parse_version($_) // 'undef'; |
18 | $version =~ /\d/ and $version = "'$version'"; |
19 | # some heuristics to figure out the module name from the file name |
20 | $module =~ s{^(lib|ext)/}{} |
21 | and $1 eq 'ext' |
22 | and ( $module =~ s{^(.*)/lib/\1\b}{$1}, |
23 | $module =~ s{(\w+)/\1\b}{$1}, |
24 | $module =~ s{^Encode/encoding}{encoding}, |
25 | $module =~ s{^MIME/Base64/QuotedPrint}{MIME/QuotedPrint}, |
26 | $module =~ s{^List/Util/lib/Scalar}{Scalar}, |
27 | $module =~ s{^(?:DynaLoader|Errno)/}{}, |
28 | ); |
29 | $module =~ s{/}{::}g; |
30 | $module =~ s/(\.pm|_pm\.PL)$//; |
31 | push @lines, sprintf "\t%-24s=> $version,\n", "'$module'"; |
32 | }, 'lib', 'ext'); |
33 | print " $] => {\n"; |
34 | print sort @lines; |
35 | print " },\n"; |