This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
ebfc9675de6c5b9f89f51f8cc1eed181bcdd9a56
[perl5.git] / Porting / Maintainers.pl
1 #!perl
2 # A simple listing of core files that have specific maintainers,
3 # or at least someone that can be called an "interested party".
4 # Also, a "module" does not necessarily mean a CPAN module, it
5 # might mean a file or files or a subdirectory.
6 # Most (but not all) of the modules have dual lives in the core
7 # and in CPAN.
8
9 package Maintainers;
10
11 use utf8;
12 use File::Glob qw(:case);
13
14 %Maintainers = (
15     'ABIGAIL'   => 'Abigail <abigail@abigail.be>',
16     'AVAR'      => 'Ævar Arnfjörð Bjarmason <avar@cpan.org>',
17     'CBERRY'    => 'Craig Berry <craigberry@mac.com>',
18     'ELIZABETH' => 'Elizabeth Mattijsen <liz@dijkmat.nl>',
19     'JDB'       => 'Jan Dubois <jand@activestate.com>',
20     'laun'      => 'Wolfgang Laun <Wolfgang.Laun@alcatel.at>',
21     'LWALL'     => 'Larry Wall <lwall@cpan.org>',
22     'MJD'       => 'Mark-Jason Dominus <mjd@plover.com>',
23     'PMQS'      => 'Paul Marquess <pmqs@cpan.org>',
24     'PVHP'      => 'Peter Prymmer <pvhp@best.com>',
25     'SARTAK'    => 'Shawn M Moore <sartak@gmail.com>',
26     'SBURKE'    => 'Sean Burke <sburke@cpan.org>',
27     'SMCCAM'    => 'Stephen McCamant <smccam@cpan.org>',
28 );
29
30 # IGNORABLE: files which, if they appear in the root of a CPAN
31 # distribution, need not appear in core (i.e. core-cpan-diff won't
32 # complain if it can't find them)
33
34 @IGNORABLE = qw(
35     .cvsignore .dualLivedDiffConfig .gitignore
36     ANNOUNCE Announce Artistic AUTHORS BENCHMARK BUGS Build.PL
37     CHANGELOG ChangeLog Changelog CHANGES Changes CONTRIBUTING COPYING Copying
38     cpanfile CREDITS dist.ini GOALS HISTORY INSTALL INSTALL.SKIP LICENSE
39     Makefile.PL MANIFEST MANIFEST.SKIP META.json META.yml MYMETA.json
40     MYMETA.yml NEW NOTES perlcritic.rc ppport.h README README.PATCHING
41     SIGNATURE THANKS TODO Todo VERSION WHATSNEW
42 );
43
44 # Each entry in the  %Modules hash roughly represents a distribution,
45 # except when DISTRIBUTION is set, where it *exactly* represents a single
46 # CPAN distribution.
47
48 # The keys of %Modules are human descriptions of the distributions, and
49 # may not exactly match a module or distribution name. Distributions
50 # which have an obvious top-level module associated with them will usually
51 # have a key named for that module, e.g. 'Archive::Extract' for
52 # Archive-Extract-N.NN.tar.gz; the remaining keys are likely to be based
53 # on the name of the distribution, e.g. 'Locale-Codes' for
54 # Locale-Codes-N.NN.tar.gz'.
55
56 # MAINTAINER indicates who the current maintainer of the module is.  For
57 # modules with no MAINTAINER field given, this is understood to be either
58 # the Perl 5 Porters if there is no DISTRIBUTION field or the UPSTREAM
59 # field is set to 'blead', or else the CPAN author whose PAUSE user ID
60 # forms the first part of the DISTRIBUTION value, e.g. 'BINGOS' in the
61 # case of 'BINGOS/Archive-Tar-1.92.tar.gz'.  (PAUSE's View Permissions
62 # page may be consulted to find other authors who have owner or co-maint
63 # permissions for the module in question.)  The few explicitly listed
64 # MAINTAINERs refer to authors whose email address is listed in the
65 # %Maintainers hash above.
66
67 # FILES is a list of filenames, glob patterns, and directory
68 # names to be recursed down, which collectively generate a complete list
69 # of the files associated with the distribution.
70
71 # UPSTREAM indicates where patches should go. undef implies
72 # that this hasn't been discussed for the module at hand.
73 # "blead" indicates that the copy of the module in the blead
74 # sources is to be considered canonical, "cpan" means that the
75 # module on CPAN is to be patched first.
76
77 # BUGS is an email or url to post bug reports.  For modules with
78 # UPSTREAM => 'blead', use perl5-porters@perl.org.  rt.cpan.org
79 # appears to automatically provide a URL for CPAN modules; any value
80 # given here overrides the default:
81 # http://rt.cpan.org/Public/Dist/Display.html?Name=$ModuleName
82
83 # DISTRIBUTION names the tarball on CPAN which (allegedly) the files
84 # included in core are derived from. Note that the file's version may not
85 # necessarily match the newest version on CPAN.
86
87 # EXCLUDED is a list of files to be excluded from a CPAN tarball before
88 # comparing the remaining contents with core. Each item can either be a
89 # full pathname (eg 't/foo.t') or a pattern (e.g. qr{^t/}).
90 # It defaults to the empty list.
91
92 # CUSTOMIZED is a list of files that have been customized within the
93 # Perl core.  Use this whenever patching a cpan upstream distribution
94 # or whenever we expect to have a file that differs from the tarball.
95 # If the file in blead matches the file in the tarball from CPAN,
96 # Porting/core-cpan-diff will warn about it, as it indicates an expected
97 # customization might have been lost when updating from upstream.  The
98 # path should be relative to the distribution directory.  If the upstream
99 # distribution should be modified to incorporate the change then be sure
100 # to raise a ticket for it on rt.cpan.org and add a comment alongside the
101 # list of CUSTOMIZED files noting the ticket number.
102
103 # DEPRECATED contains the *first* version of Perl in which the module
104 # was considered deprecated.  It should only be present if the module is
105 # actually deprecated.  Such modules should use deprecated.pm to
106 # issue a warning if used.  E.g.:
107 #
108 #     use if $] >= 5.011, 'deprecate';
109 #
110
111 # MAP is a hash that maps CPAN paths to their core equivalents.
112 # Each key represents a string prefix, with longest prefixes checked
113 # first. The first match causes that prefix to be replaced with the
114 # corresponding key. For example, with the following MAP:
115 #   {
116 #     'lib/'     => 'lib/',
117 #     ''     => 'lib/Foo/',
118 #   },
119 #
120 # these files are mapped as shown:
121 #
122 #    README     becomes lib/Foo/README
123 #    lib/Foo.pm becomes lib/Foo.pm
124 #
125 # The default is dependent on the type of module.
126 # For distributions which appear to be stored under ext/, it defaults to:
127 #
128 #   { '' => 'ext/Foo-Bar/' }
129 #
130 # otherwise, it's
131 #
132 #   {
133 #     'lib/'     => 'lib/',
134 #     ''     => 'lib/Foo/Bar/',
135 #   }
136
137 %Modules = (
138
139     'AnyDBM_File' => {
140         'FILES'       => q[lib/AnyDBM_File.{pm,t}],
141         'UPSTREAM'    => 'blead',
142     },
143
144     'Archive::Tar' => {
145         'DISTRIBUTION' => 'BINGOS/Archive-Tar-1.92.tar.gz',
146         'FILES'        => q[cpan/Archive-Tar],
147         'UPSTREAM'     => 'cpan',
148         'BUGS'         => 'bug-archive-tar@rt.cpan.org',
149     },
150
151     'Attribute::Handlers' => {
152         'DISTRIBUTION' => 'SMUELLER/Attribute-Handlers-0.93.tar.gz',
153         'FILES'        => q[dist/Attribute-Handlers],
154         'UPSTREAM'     => 'blead',
155     },
156
157     'attributes' => {
158         'FILES'      => q[ext/attributes],
159         'UPSTREAM'   => 'blead',
160     },
161
162     'autodie' => {
163         'DISTRIBUTION' => 'PJF/autodie-2.22.tar.gz',
164         'FILES'        => q[cpan/autodie],
165         'EXCLUDED'     => [
166             qr{benchmarks},
167             # All these tests depend upon external
168             # modules that don't exist when we're
169             # building the core.  Hence, they can
170             # never run, and should not be merged.
171             qw( t/author-critic.t
172                 t/boilerplate.t
173                 t/critic.t
174                 t/fork.t
175                 t/kwalitee.t
176                 t/lex58.t
177                 t/pod-coverage.t
178                 t/pod.t
179                 t/release-pod-coverage.t
180                 t/release-pod-syntax.t
181                 t/socket.t
182                 t/system.t
183                 )
184         ],
185         'CUSTOMIZED'   => [
186             # Waiting to be merged upstream: see CPAN RT#87237
187             qw( t/utf8_open.t ),
188         ],
189         'UPSTREAM'   => 'cpan',
190     },
191
192     'AutoLoader' => {
193         'DISTRIBUTION' => 'SMUELLER/AutoLoader-5.73.tar.gz',
194         'FILES'        => q[cpan/AutoLoader],
195         'EXCLUDED'     => ['t/00pod.t'],
196         'UPSTREAM'     => 'cpan',
197     },
198
199     'autouse' => {
200         'DISTRIBUTION' => 'FLORA/autouse-1.07.tar.gz',
201         'FILES'        => q[dist/autouse],
202         'EXCLUDED'     => [qr{^t/release-.*\.t}],
203         'UPSTREAM'     => 'blead',
204     },
205
206     'B' => {
207         'FILES'      => q[ext/B],
208         'EXCLUDED'   => [
209             qw( B/Concise.pm
210                 t/concise.t
211                 ),
212         ],
213         'UPSTREAM' => 'blead',
214     },
215
216     'B::Concise' => {
217         'MAINTAINER' => 'SMCCAM',
218         'FILES'      => q[ext/B/B/Concise.pm ext/B/t/concise.t],
219         'UPSTREAM'   => 'blead',
220     },
221
222     'B::Debug' => {
223         'DISTRIBUTION' => 'RURBAN/B-Debug-1.18.tar.gz',
224         'FILES'        => q[cpan/B-Debug],
225         'EXCLUDED'     => ['t/pod.t'],
226         'UPSTREAM'     => 'cpan',
227     },
228
229     'B::Deparse' => {
230         'MAINTAINER' => 'SMCCAM',
231         'FILES'      => q[dist/B-Deparse],
232         'UPSTREAM'   => 'blead',
233     },
234
235     'base' => {
236         'DISTRIBUTION' => 'RGARCIA/base-2.18.tar.gz',
237         'FILES'        => q[dist/base],
238         'UPSTREAM'     => 'blead',
239     },
240
241     'Benchmark' => {
242         'FILES'      => q[lib/Benchmark.{pm,t}],
243         'UPSTREAM'   => 'blead',
244     },
245
246     'bignum' => {
247         'DISTRIBUTION' => 'FLORA/bignum-0.32.tar.gz',
248         'FILES'        => q[dist/bignum],
249         'EXCLUDED'     => [
250             qr{^inc/Module/},
251             qw( t/pod.t
252                 t/pod_cov.t
253                 ),
254         ],
255         'UPSTREAM' => 'blead',
256     },
257
258     'Carp' => {
259         'DISTRIBUTION' => 'ZEFRAM/Carp-1.32.tar.gz',
260         'FILES'        => q[dist/Carp],
261         'UPSTREAM'     => 'blead',
262     },
263
264     'CGI' => {
265         'DISTRIBUTION' => 'MARKSTOS/CGI.pm-3.63.tar.gz',
266         'FILES'        => q[cpan/CGI],
267         'EXCLUDED'     => [
268             qw( cgi_docs.html
269                 examples/WORLD_WRITABLE/18.157.1.253.sav
270                 t/gen-tests/gen-start-end-tags.pl
271                 t/fast.t
272                 ),
273         ],
274         'UPSTREAM'   => 'cpan',
275     },
276
277     'Class::Struct' => {
278         'FILES'      => q[lib/Class/Struct.{pm,t}],
279         'UPSTREAM'   => 'blead',
280     },
281
282     'Compress::Raw::Bzip2' => {
283         'DISTRIBUTION' => 'PMQS/Compress-Raw-Bzip2-2.062.tar.gz',
284         'FILES'        => q[cpan/Compress-Raw-Bzip2],
285         'EXCLUDED'     => [
286             qr{^t/Test/},
287             'bzip2-src/bzip2-cpp.patch',
288         ],
289         'UPSTREAM' => 'cpan',
290     },
291
292     'Compress::Raw::Zlib' => {
293         'DISTRIBUTION' => 'PMQS/Compress-Raw-Zlib-2.062.tar.gz',
294
295         'FILES'    => q[cpan/Compress-Raw-Zlib],
296         'EXCLUDED' => [
297             qr{^t/Test/},
298             qw( t/000prereq.t
299                 t/99pod.t
300                 ),
301         ],
302         'UPSTREAM' => 'cpan',
303     },
304
305     'Config::Perl::V' => {
306         'DISTRIBUTION' => 'HMBRAND/Config-Perl-V-0.19.tgz',
307         'FILES'        => q[cpan/Config-Perl-V],
308         'EXCLUDED'     => ['examples/show-v.pl'],
309         'UPSTREAM'     => 'cpan',
310     },
311
312     'constant' => {
313         'DISTRIBUTION' => 'SAPER/constant-1.27.tar.gz',
314         'FILES'        => q[dist/constant],
315         'EXCLUDED'     => [
316             qw( t/00-load.t
317                 t/more-tests.t
318                 t/pod-coverage.t
319                 t/pod.t
320                 eg/synopsis.pl
321                 ),
322         ],
323         'UPSTREAM' => 'blead',
324     },
325
326     'CPAN' => {
327         'DISTRIBUTION' => 'ANDK/CPAN-2.03-TRIAL.tar.gz',
328         'FILES'        => q[cpan/CPAN],
329         'EXCLUDED'     => [
330             qr{^distroprefs/},
331             qr{^inc/Test/},
332             qr{^t/CPAN/authors/},
333             qw( lib/CPAN/Admin.pm
334                 scripts/cpan-mirrors
335                 PAUSE2015.pub
336                 SlayMakefile
337                 t/00signature.t
338                 t/04clean_load.t
339                 t/12cpan.t
340                 t/13tarzip.t
341                 t/14forkbomb.t
342                 t/30shell.coverage
343                 t/30shell.t
344                 t/31sessions.t
345                 t/41distribution.t
346                 t/42distroprefs.t
347                 t/44cpanmeta.t
348                 t/43distroprefspref.t
349                 t/50pod.t
350                 t/51pod.t
351                 t/52podcover.t
352                 t/60credentials.t
353                 t/70_critic.t
354                 t/71_minimumversion.t
355                 t/CPAN/CpanTestDummies-1.55.pm
356                 t/CPAN/TestConfig.pm
357                 t/CPAN/TestMirroredBy
358                 t/CPAN/TestPatch.txt
359                 t/CPAN/modules/02packages.details.txt
360                 t/CPAN/modules/03modlist.data
361                 t/data/META-dynamic.json
362                 t/data/META-dynamic.yml
363                 t/data/META-static.json
364                 t/data/META-static.yml
365                 t/data/MYMETA.json
366                 t/data/MYMETA.yml
367                 t/local_utils.pm
368                 t/perlcriticrc
369                 t/yaml_code.yml
370                 ),
371         ],
372         'UPSTREAM' => 'cpan',
373     },
374
375     # Note: When updating CPAN-Meta the META.* files will need to be regenerated
376     # perl -Icpan/CPAN-Meta/lib Porting/makemeta
377     'CPAN::Meta' => {
378         'DISTRIBUTION' => 'DAGOLDEN/CPAN-Meta-2.132830.tar.gz',
379         'FILES'        => q[cpan/CPAN-Meta],
380         'EXCLUDED'     => [
381             qw(t/00-compile.t),
382             qw[t/00-report-prereqs.t],
383             qr{t/README-data.txt},
384             qr{^xt},
385             qr{^history},
386         ],
387         'UPSTREAM' => 'cpan',
388     },
389
390     'CPAN::Meta::Requirements' => {
391         'DISTRIBUTION' => 'DAGOLDEN/CPAN-Meta-Requirements-2.125.tar.gz',
392         'FILES'        => q[cpan/CPAN-Meta-Requirements],
393         'EXCLUDED'     => [
394             qw(t/00-compile.t),
395             qw(t/00-report-prereqs.t),
396             qr{^xt},
397             qr{^history},
398         ],
399         'UPSTREAM' => 'cpan',
400     },
401
402     'CPAN::Meta::YAML' => {
403         'DISTRIBUTION' => 'DAGOLDEN/CPAN-Meta-YAML-0.010.tar.gz',
404         'FILES'        => q[cpan/CPAN-Meta-YAML],
405         'EXCLUDED'     => [
406             't/00-compile.t',
407             't/04_scalar.t',    # requires YAML.pm
408             qr{^xt},
409         ],
410         'UPSTREAM' => 'cpan',
411     },
412
413     'Data::Dumper' => {
414         'DISTRIBUTION' => 'SMUELLER/Data-Dumper-2.145.tar.gz',
415         'FILES'        => q[dist/Data-Dumper],
416         'UPSTREAM'     => 'blead',
417     },
418
419     'DB_File' => {
420         'DISTRIBUTION' => 'PMQS/DB_File-1.829.tar.gz',
421         'FILES'        => q[cpan/DB_File],
422         'EXCLUDED'     => [
423             qr{^patches/},
424             qw( t/pod.t
425                 fallback.h
426                 fallback.xs
427                 ),
428         ],
429         'UPSTREAM' => 'cpan',
430     },
431
432     'DBM_Filter' => {
433         'FILES'      => q[lib/DBM_Filter.pm lib/DBM_Filter],
434         'UPSTREAM'   => 'blead',
435     },
436
437     'Devel::Peek' => {
438         'FILES'      => q[ext/Devel-Peek],
439         'UPSTREAM'   => 'blead',
440     },
441
442     'Devel::PPPort' => {
443         'DISTRIBUTION' => 'MHX/Devel-PPPort-3.21.tar.gz',
444         'FILES'        => q[cpan/Devel-PPPort],
445         'EXCLUDED'     => ['PPPort.pm'],    # we use PPPort_pm.PL instead
446         'UPSTREAM'     => undef, # rjbs has asked mhx to have blead be upstream
447     },
448
449     'Devel::SelfStubber' => {
450         'DISTRIBUTION' => 'FLORA/Devel-SelfStubber-1.05.tar.gz',
451         'FILES'        => q[dist/Devel-SelfStubber],
452         'EXCLUDED'     => [qr{^t/release-.*\.t}],
453         'UPSTREAM'     => 'blead',
454     },
455
456     'diagnostics' => {
457         'FILES'      => q[lib/diagnostics.{pm,t}],
458         'UPSTREAM'   => 'blead',
459     },
460
461     'Digest' => {
462         'DISTRIBUTION' => 'GAAS/Digest-1.17.tar.gz',
463         'FILES'        => q[cpan/Digest],
464         'EXCLUDED'     => ['digest-bench'],
465         'UPSTREAM'     => "cpan",
466     },
467
468     'Digest::MD5' => {
469         'DISTRIBUTION' => 'GAAS/Digest-MD5-2.53.tar.gz',
470         'FILES'        => q[cpan/Digest-MD5],
471         'EXCLUDED'     => ['rfc1321.txt'],
472         'UPSTREAM'     => "cpan",
473     },
474
475     'Digest::SHA' => {
476         'DISTRIBUTION' => 'MSHELOR/Digest-SHA-5.85.tar.gz',
477         'FILES'        => q[cpan/Digest-SHA],
478         'EXCLUDED'     => [
479             qw( t/pod.t
480                 t/podcover.t
481                 examples/dups
482                 ),
483         ],
484         'UPSTREAM' => 'cpan',
485     },
486
487     'DirHandle' => {
488         'FILES'      => q[lib/DirHandle.{pm,t}],
489         'UPSTREAM'   => 'blead',
490     },
491
492     'Dumpvalue' => {
493         'DISTRIBUTION' => 'FLORA/Dumpvalue-1.17.tar.gz',
494         'FILES'        => q[dist/Dumpvalue],
495         'EXCLUDED'     => [qr{^t/release-.*\.t}],
496         'UPSTREAM'     => 'blead',
497     },
498
499     'DynaLoader' => {
500         'FILES'      => q[ext/DynaLoader],
501         'UPSTREAM'   => 'blead',
502     },
503
504     'Encode' => {
505         'DISTRIBUTION' => 'DANKOGAI/Encode-2.55.tar.gz',
506         'FILES'        => q[cpan/Encode],
507         'UPSTREAM'     => 'cpan',
508     },
509
510     'encoding::warnings' => {
511         'DISTRIBUTION' => 'AUDREYT/encoding-warnings-0.11.tar.gz',
512         'FILES'        => q[cpan/encoding-warnings],
513         'EXCLUDED'     => [
514             qr{^inc/Module/},
515             qw(t/0-signature.t),
516         ],
517         'UPSTREAM' => undef,
518     },
519
520     'English' => {
521         'FILES'      => q[lib/English.{pm,t}],
522         'UPSTREAM'   => 'blead',
523     },
524
525     'Env' => {
526         'DISTRIBUTION' => 'FLORA/Env-1.04.tar.gz',
527         'FILES'        => q[dist/Env],
528         'EXCLUDED'     => [qr{^t/release-.*\.t}],
529         'UPSTREAM'     => 'blead',
530     },
531
532     'Errno' => {
533         'FILES'      => q[ext/Errno],
534         'UPSTREAM'   => 'blead',
535     },
536
537     'Exporter' => {
538         'DISTRIBUTION' => 'TODDR/Exporter-5.68.tar.gz',
539         'FILES'        => q[dist/Exporter],
540         'EXCLUDED' => [
541             qw( t/pod.t
542                 t/use.t
543                 ),
544         ],
545         'UPSTREAM' => 'blead',
546     },
547
548     'ExtUtils::CBuilder' => {
549         'DISTRIBUTION' => 'AMBS/ExtUtils/ExtUtils-CBuilder-0.280212.tar.gz',
550         'FILES'        => q[dist/ExtUtils-CBuilder],
551         'EXCLUDED'     => [
552             qw(README.mkdn),
553             qr{^xt},
554         ],
555         'UPSTREAM'     => 'blead',
556     },
557
558     'ExtUtils::Command' => {
559         'DISTRIBUTION' => 'FLORA/ExtUtils-Command-1.18.tar.gz',
560         'FILES'        => q[dist/ExtUtils-Command],
561         'EXCLUDED'     => [qr{^t/release-}],
562         'UPSTREAM'     => 'blead',
563     },
564
565     'ExtUtils::Constant' => {
566
567         # Nick has confirmed that while we have diverged from CPAN,
568         # this package isn't primarily maintained in core
569         # Another release will happen "Sometime"
570         'DISTRIBUTION' => '',    #'NWCLARK/ExtUtils-Constant-0.16.tar.gz',
571         'FILES'    => q[cpan/ExtUtils-Constant],
572         'EXCLUDED' => [
573             qw( lib/ExtUtils/Constant/Aaargh56Hash.pm
574                 examples/perl_keyword.pl
575                 examples/perl_regcomp_posix_keyword.pl
576                 ),
577         ],
578         'UPSTREAM' => undef,
579     },
580
581     'ExtUtils::Install' => {
582         'DISTRIBUTION' => 'YVES/ExtUtils-Install-1.54.tar.gz',
583         'FILES'        => q[dist/ExtUtils-Install],
584         'EXCLUDED'     => [
585             qw( t/lib/Test/Builder.pm
586                 t/lib/Test/Builder/Module.pm
587                 t/lib/Test/More.pm
588                 t/lib/Test/Simple.pm
589                 t/pod-coverage.t
590                 t/pod.t
591                 ),
592         ],
593         'UPSTREAM' => 'blead',
594     },
595
596     'ExtUtils::MakeMaker' => {
597         'DISTRIBUTION' => 'BINGOS/ExtUtils-MakeMaker-6.79_01.tar.gz',
598         'FILES'        => q[cpan/ExtUtils-MakeMaker],
599         'EXCLUDED'     => [
600             qr{^t/lib/Test/},
601             qr{^(bundled|my)/},
602             qr{^t/Liblist_Kid.t},
603             qr{^t/liblist/},
604             qr{^\.perlcriticrc},
605         ],
606         'UPSTREAM' => 'cpan',
607     },
608
609     'ExtUtils::Manifest' => {
610         'DISTRIBUTION' => 'FLORA/ExtUtils-Manifest-1.63.tar.gz',
611         'FILES'        => q[dist/ExtUtils-Manifest],
612         'EXCLUDED'     => [qr(t/release-.*\.t)],
613         'UPSTREAM'     => 'blead',
614     },
615
616     'ExtUtils::ParseXS' => {
617         'DISTRIBUTION' => 'SMUELLER/ExtUtils-ParseXS-3.22.tar.gz',
618         'FILES'        => q[dist/ExtUtils-ParseXS],
619         'UPSTREAM'     => 'blead',
620     },
621
622     'Fcntl' => {
623         'FILES'      => q[ext/Fcntl],
624         'UPSTREAM'   => 'blead',
625     },
626
627     'File::Basename' => {
628         'FILES'      => q[lib/File/Basename.{pm,t}],
629         'UPSTREAM'   => 'blead',
630     },
631
632     'File::Compare' => {
633         'FILES'      => q[lib/File/Compare.{pm,t}],
634         'UPSTREAM'   => 'blead',
635     },
636
637     'File::Copy' => {
638         'FILES'      => q[lib/File/Copy.{pm,t}],
639         'UPSTREAM'   => 'blead',
640     },
641
642     'File::DosGlob' => {
643         'FILES'      => q[ext/File-DosGlob],
644         'UPSTREAM'   => 'blead',
645     },
646
647     'File::Fetch' => {
648         'DISTRIBUTION' => 'BINGOS/File-Fetch-0.44.tar.gz',
649         'FILES'        => q[cpan/File-Fetch],
650         'UPSTREAM'     => 'cpan',
651     },
652
653     'File::Find' => {
654         'FILES'      => q[ext/File-Find],
655         'UPSTREAM'   => 'blead',
656     },
657
658     'File::Glob' => {
659         'FILES'      => q[ext/File-Glob],
660         'UPSTREAM'   => 'blead',
661     },
662
663     'File::Path' => {
664         'DISTRIBUTION' => 'DLAND/File-Path-2.09.tar.gz',
665         'FILES'        => q[cpan/File-Path],
666         'EXCLUDED'     => [
667             qw( eg/setup-extra-tests
668                 t/pod.t
669                 )
670         ],
671         'MAP' => {
672             ''   => 'cpan/File-Path/lib/File/',
673             't/' => 'cpan/File-Path/t/',
674         },
675         'UPSTREAM' => undef,
676     },
677
678     'File::stat' => {
679         'FILES'      => q[lib/File/stat{.pm,*.t}],
680         'UPSTREAM'   => 'blead',
681     },
682
683     'File::Temp' => {
684         'DISTRIBUTION' => 'DAGOLDEN/File-Temp-0.2304.tar.gz',
685         'FILES'        => q[cpan/File-Temp],
686         'EXCLUDED'     => [
687             qw( misc/benchmark.pl
688                 misc/results.txt
689                 ),
690             qw[t/00-report-prereqs.t],
691             qr{^xt},
692         ],
693         'UPSTREAM' => 'cpan',
694     },
695
696     'FileCache' => {
697         'FILES'      => q[ext/FileCache],
698         'UPSTREAM'   => 'blead',
699     },
700
701     'FileHandle' => {
702         'FILES'      => q[lib/FileHandle.{pm,t}],
703         'UPSTREAM'   => 'blead',
704     },
705
706     'Filter::Simple' => {
707         'DISTRIBUTION' => 'SMUELLER/Filter-Simple-0.88.tar.gz',
708         'FILES'        => q[dist/Filter-Simple],
709         'EXCLUDED'     => [
710             qr{^demo/}
711         ],
712         'UPSTREAM' => 'blead',
713     },
714
715     'Filter::Util::Call' => {
716         'DISTRIBUTION' => 'RURBAN/Filter-1.49.tar.gz',
717         'FILES'        => q[cpan/Filter-Util-Call
718                  pod/perlfilter.pod
719                 ],
720         'EXCLUDED' => [
721             qr{^decrypt/},
722             qr{^examples/},
723             qr{^Exec/},
724             qr{^lib/Filter/},
725             qr{^tee/},
726             qw( Call/Makefile.PL
727                 Call/ppport.h
728                 Call/typemap
729                 mytest
730                 t/cpp.t
731                 t/decrypt.t
732                 t/exec.t
733                 t/order.t
734                 t/pod.t
735                 t/sh.t
736                 t/tee.t
737                 t/z_kwalitee.t
738                 t/z_meta.t
739                 t/z_perl_minimum_version.t
740                 t/z_pod-coverage.t
741                 t/z_pod.t
742                 ),
743         ],
744         'MAP' => {
745             'Call/'          => 'cpan/Filter-Util-Call/',
746             'filter-util.pl' => 'cpan/Filter-Util-Call/filter-util.pl',
747             'perlfilter.pod' => 'pod/perlfilter.pod',
748             ''               => 'cpan/Filter-Util-Call/',
749         },
750         'UPSTREAM' => 'cpan',
751     },
752
753     'FindBin' => {
754         'FILES'      => q[lib/FindBin.{pm,t}],
755         'UPSTREAM'   => 'blead',
756     },
757
758     'GDBM_File' => {
759         'FILES'      => q[ext/GDBM_File],
760         'UPSTREAM'   => 'blead',
761     },
762
763     'Getopt::Long' => {
764         'DISTRIBUTION' => 'JV/Getopt-Long-2.42.tar.gz',
765         'FILES'        => q[cpan/Getopt-Long],
766         'EXCLUDED'     => [
767             qr{^examples/},
768             qw( perl-Getopt-Long.spec
769                 lib/newgetopt.pl
770                 t/gol-compat.t
771                 ),
772         ],
773         'UPSTREAM' => 'cpan',
774     },
775
776     'Getopt::Std' => {
777         'FILES'      => q[lib/Getopt/Std.{pm,t}],
778         'UPSTREAM'   => 'blead',
779     },
780
781     'Hash::Util' => {
782         'FILES'      => q[ext/Hash-Util],
783         'UPSTREAM'   => 'blead',
784     },
785
786     'Hash::Util::FieldHash' => {
787         'FILES'      => q[ext/Hash-Util-FieldHash],
788         'UPSTREAM'   => 'blead',
789     },
790
791     'HTTP::Tiny' => {
792         'DISTRIBUTION' => 'DAGOLDEN/HTTP-Tiny-0.036.tar.gz',
793         'FILES'        => q[cpan/HTTP-Tiny],
794         'EXCLUDED'     => [
795             't/00-compile.t',
796             't/00-report-prereqs.t',
797             't/200_live.t',
798             't/200_live_local_ip.t',
799             't/210_live_ssl.t',
800             qr/^eg/,
801             qr/^xt/
802         ],
803         'UPSTREAM' => 'cpan',
804     },
805
806     'I18N::Collate' => {
807         'DISTRIBUTION' => 'FLORA/I18N-Collate-1.02.tar.gz',
808         'FILES'        => q[dist/I18N-Collate],
809         'EXCLUDED'     => [qr{^t/release-.*\.t}],
810         'UPSTREAM'     => 'blead',
811     },
812
813     'I18N::Langinfo' => {
814         'FILES'      => q[ext/I18N-Langinfo],
815         'UPSTREAM'   => 'blead',
816     },
817
818     'I18N::LangTags' => {
819         'FILES'        => q[dist/I18N-LangTags],
820         'UPSTREAM'     => 'blead',
821     },
822
823     'if' => {
824         'DISTRIBUTION' => 'ILYAZ/modules/if-0.0601.tar.gz',
825         'FILES'        => q[dist/if],
826         'UPSTREAM'     => 'blead',
827     },
828
829     'IO' => {
830         'DISTRIBUTION' => 'GBARR/IO-1.25.tar.gz',
831         'FILES'        => q[dist/IO/],
832         'EXCLUDED'     => ['t/test.pl'],
833         'UPSTREAM'     => 'blead',
834     },
835
836     'IO-Compress' => {
837         'DISTRIBUTION' => 'PMQS/IO-Compress-2.062.tar.gz',
838         'FILES'        => q[cpan/IO-Compress],
839         'EXCLUDED'     => [qr{t/Test/}],
840         'UPSTREAM'     => 'cpan',
841     },
842
843     'IO::Zlib' => {
844         'DISTRIBUTION' => 'TOMHUGHES/IO-Zlib-1.10.tar.gz',
845         'FILES'        => q[cpan/IO-Zlib],
846         'UPSTREAM'     => undef,
847     },
848
849     'IPC::Cmd' => {
850         'DISTRIBUTION' => 'BINGOS/IPC-Cmd-0.84.tar.gz',
851         'FILES'        => q[cpan/IPC-Cmd],
852         'UPSTREAM'     => 'cpan',
853     },
854
855     'IPC::Open3' => {
856         'FILES'      => q[ext/IPC-Open3],
857         'UPSTREAM'   => 'blead',
858     },
859
860     'IPC::SysV' => {
861         'DISTRIBUTION' => 'MHX/IPC-SysV-2.04.tar.gz',
862         'FILES'        => q[cpan/IPC-SysV],
863         'EXCLUDED'     => [
864             qw( const-c.inc
865                 const-xs.inc
866                 ),
867         ],
868         'UPSTREAM' => 'cpan',
869     },
870
871     'JSON::PP' => {
872         'DISTRIBUTION' => 'MAKAMAKA/JSON-PP-2.27202.tar.gz',
873         'FILES'        => q[cpan/JSON-PP],
874         'EXCLUDED'     => [
875             't/900_pod.t',    # Pod testing
876         ],
877
878         # Waiting to be merged upstream: see PERL RT#119825
879         'CUSTOMIZED'   => [
880             'lib/JSON/PP.pm',
881         ],
882
883         'UPSTREAM' => 'cpan',
884     },
885
886     'lib' => {
887         'DISTRIBUTION' => 'SMUELLER/lib-0.63.tar.gz',
888         'FILES'        => q[dist/lib/],
889         'EXCLUDED'     => [
890             qw( forPAUSE/lib.pm
891                 t/00pod.t
892                 ),
893         ],
894         'UPSTREAM' => 'blead',
895     },
896
897     'libnet' => {
898         'DISTRIBUTION' => 'SHAY/libnet-1.23.tar.gz',
899         'FILES'        => q[cpan/libnet],
900         'EXCLUDED'     => [
901             qw( Configure
902                 install-nomake
903                 ),
904         ],
905         # Customized for perl since we cannot use either an auto-generated
906         # script or the version in the CPAN distro.
907         'CUSTOMIZED' => ['Makefile.PL'],
908         'UPSTREAM'   => 'cpan',
909     },
910
911     'Locale-Codes' => {
912         'DISTRIBUTION' => 'SBECK/Locale-Codes-3.27.tar.gz',
913         'FILES'        => q[cpan/Locale-Codes],
914         'EXCLUDED'     => [
915             qw( t/pod_coverage.t
916                 t/pod.t),
917             qr{^t/runtests},
918             qr{^t/runtests\.bat},
919             qr{^internal/},
920             qr{^examples/},
921         ],
922         'UPSTREAM' => 'cpan',
923     },
924
925     'Locale::Maketext' => {
926         'DISTRIBUTION' => 'TODDR/Locale-Maketext-1.23.tar.gz',
927         'FILES'        => q[dist/Locale-Maketext],
928         'EXCLUDED'     => [
929             qw(
930                 perlcriticrc
931                 t/00_load.t
932                 t/pod.t
933                 ),
934         ],
935         'UPSTREAM' => 'blead',
936     },
937
938     'Locale::Maketext::Simple' => {
939         'DISTRIBUTION' => 'JESSE/Locale-Maketext-Simple-0.21.tar.gz',
940         'FILES'        => q[cpan/Locale-Maketext-Simple],
941         'EXCLUDED'     => [qr{^inc/}],
942         'UPSTREAM'     => 'cpan',
943     },
944
945     'mad' => {
946         'MAINTAINER' => 'LWALL',
947         'FILES'      => q[mad],
948         'UPSTREAM'   => undef,
949     },
950
951     'Math::BigInt' => {
952         'DISTRIBUTION' => 'PJACKLAM/Math-BigInt-1.997.tar.gz',
953         'FILES'        => q[dist/Math-BigInt],
954         'EXCLUDED'     => [
955             qr{^inc/},
956             qr{^examples/},
957             qw( t/00sig.t
958                 t/01load.t
959                 t/02pod.t
960                 t/03podcov.t
961                 ),
962         ],
963         'UPSTREAM' => 'blead',
964     },
965
966     'Math::BigInt::FastCalc' => {
967         'DISTRIBUTION' => 'PJACKLAM/Math-BigInt-FastCalc-0.30.tar.gz',
968         'FILES'        => q[dist/Math-BigInt-FastCalc],
969         'EXCLUDED'     => [
970             qr{^inc/},
971             qw( t/00sig.t
972                 t/01load.t
973                 t/02pod.t
974                 t/03podcov.t
975                 ),
976
977             # instead we use the versions of these test
978             # files that come with Math::BigInt:
979             qw( t/bigfltpm.inc
980                 t/bigfltpm.t
981                 t/bigintpm.inc
982                 t/bigintpm.t
983                 t/mbimbf.inc
984                 t/mbimbf.t
985                 ),
986         ],
987         'UPSTREAM' => 'blead',
988     },
989
990     'Math::BigRat' => {
991         'DISTRIBUTION' => 'PJACKLAM/Math-BigRat-0.2602.tar.gz',
992         'FILES'        => q[dist/Math-BigRat],
993         'EXCLUDED'     => [
994             qr{^inc/},
995             qw( t/00sig.t
996                 t/01load.t
997                 t/02pod.t
998                 t/03podcov.t
999                 ),
1000         ],
1001         'UPSTREAM' => 'blead',
1002     },
1003
1004     'Math::Complex' => {
1005         'DISTRIBUTION' => 'ZEFRAM/Math-Complex-1.59.tar.gz',
1006         'FILES'        => q[cpan/Math-Complex],
1007         'EXCLUDED'     => [
1008             qw( t/pod.t
1009                 t/pod-coverage.t
1010                 ),
1011         ],
1012         'UPSTREAM' => 'cpan',
1013     },
1014
1015     'Memoize' => {
1016         'DISTRIBUTION' => 'MJD/Memoize-1.03.tgz',
1017         'FILES'        => q[cpan/Memoize],
1018         'EXCLUDED'     => ['article.html'],
1019         'UPSTREAM'     => 'cpan',
1020     },
1021
1022     'MIME::Base64' => {
1023         'DISTRIBUTION' => 'GAAS/MIME-Base64-3.14.tar.gz',
1024         'FILES'        => q[cpan/MIME-Base64],
1025         'EXCLUDED'     => ['t/bad-sv.t'],
1026         'UPSTREAM'     => 'cpan',
1027     },
1028
1029     #
1030     # To update Module-Build in blead see
1031     # https://github.com/Perl-Toolchain-Gang/Module-Build/blob/master/devtools/patching_blead.pod
1032     #
1033
1034     'Module::Build' => {
1035         'DISTRIBUTION' => 'LEONT/Module-Build-0.4007.tar.gz',
1036         'FILES'        => q[cpan/Module-Build],
1037         'EXCLUDED'     => [
1038             qw( t/par.t
1039                 t/signature.t
1040                 ),
1041             qr{^contrib/},
1042             qr{^inc},
1043         ],
1044         # Generated file, not part of the CPAN distro:
1045         'CUSTOMIZED' => ['lib/Module/Build/ConfigData.pm'],
1046         'DEPRECATED' => '5.019000',
1047         'UPSTREAM'   => 'cpan',
1048     },
1049
1050     'Module::CoreList' => {
1051         'DISTRIBUTION' => 'BINGOS/Module-CoreList-2.99.tar.gz',
1052         'FILES'        => q[dist/Module-CoreList],
1053         'UPSTREAM'     => 'blead',
1054     },
1055
1056     'Module::Load' => {
1057         'DISTRIBUTION' => 'BINGOS/Module-Load-0.24.tar.gz',
1058         'FILES'        => q[cpan/Module-Load],
1059         'UPSTREAM'     => 'cpan',
1060     },
1061
1062     'Module::Load::Conditional' => {
1063         'DISTRIBUTION' => 'BINGOS/Module-Load-Conditional-0.58.tar.gz',
1064         'FILES'        => q[cpan/Module-Load-Conditional],
1065         'UPSTREAM'     => 'cpan',
1066     },
1067
1068     'Module::Loaded' => {
1069         'DISTRIBUTION' => 'BINGOS/Module-Loaded-0.08.tar.gz',
1070         'FILES'        => q[cpan/Module-Loaded],
1071         'UPSTREAM'     => 'cpan',
1072     },
1073
1074     'Module::Metadata' => {
1075         'DISTRIBUTION' => 'ETHER/Module-Metadata-1.000019.tar.gz',
1076         'FILES'        => q[cpan/Module-Metadata],
1077         'EXCLUDED'     => [
1078             qr{^maint},
1079             qr{^xt},
1080         ],
1081         'UPSTREAM' => 'cpan',
1082     },
1083
1084     'mro' => {
1085         'FILES'      => q[ext/mro],
1086         'UPSTREAM'   => 'blead',
1087     },
1088
1089     'NDBM_File' => {
1090         'FILES'      => q[ext/NDBM_File],
1091         'UPSTREAM'   => 'blead',
1092     },
1093
1094     'Net::Ping' => {
1095         'DISTRIBUTION' => 'SMPETERS/Net-Ping-2.41.tar.gz',
1096         'FILES'        => q[dist/Net-Ping],
1097         'EXCLUDED'     => [
1098             qr{^.travis.yml},
1099             qr{^README.md},
1100         ],
1101         'UPSTREAM'     => 'blead',
1102     },
1103
1104     'NEXT' => {
1105         'DISTRIBUTION' => 'FLORA/NEXT-0.65.tar.gz',
1106         'FILES'        => q[cpan/NEXT],
1107         'EXCLUDED'     => [qr{^demo/}],
1108         'UPSTREAM'     => 'cpan',
1109     },
1110
1111     'ODBM_File' => {
1112         'FILES'      => q[ext/ODBM_File],
1113         'UPSTREAM'   => 'blead',
1114     },
1115
1116     'Opcode' => {
1117         'FILES'      => q[ext/Opcode],
1118         'UPSTREAM'   => 'blead',
1119     },
1120
1121     'overload' => {
1122         'FILES'      => q[lib/overload{.pm,.t,64.t}],
1123         'UPSTREAM'   => 'blead',
1124     },
1125
1126     'Package::Constants' => {
1127         'DISTRIBUTION' => 'KANE/Package-Constants-0.02.tar.gz',
1128         'FILES'        => q[cpan/Package-Constants],
1129         'UPSTREAM'     => 'cpan',
1130     },
1131
1132     'Params::Check' => {
1133         'DISTRIBUTION' => 'BINGOS/Params-Check-0.38.tar.gz',
1134         'EXCLUDED'     => ['Params-Check-0.26.tar.gz'],
1135         'FILES'        => q[cpan/Params-Check],
1136         'UPSTREAM'     => 'cpan',
1137     },
1138
1139     'parent' => {
1140         'DISTRIBUTION' => 'CORION/parent-0.228.tar.gz',
1141         'FILES'        => q[cpan/parent],
1142         'UPSTREAM'     => undef,
1143     },
1144
1145     'Parse::CPAN::Meta' => {
1146         'DISTRIBUTION' => 'DAGOLDEN/Parse-CPAN-Meta-1.4409.tar.gz',
1147         'FILES'        => q[cpan/Parse-CPAN-Meta],
1148         'EXCLUDED'     => [
1149             qw(t/00-compile.t),
1150             qw[t/00-report-prereqs.t],
1151             qr{^xt},
1152         ],
1153         'UPSTREAM'     => 'cpan',
1154     },
1155
1156     'PathTools' => {
1157         'DISTRIBUTION' => 'SMUELLER/PathTools-3.40.tar.gz',
1158         'FILES'        => q[dist/Cwd],
1159         'EXCLUDED'     => [qr{^t/lib/Test/}],
1160         'UPSTREAM'     => "blead",
1161
1162         # NOTE: PathTools is in dist/Cwd/ instead of dist/PathTools because it
1163         # contains Cwd.xs and something, possibly Makefile.SH, makes an assumption
1164         # that the leafname of some file corresponds with the pathname of the
1165         # directory.
1166     },
1167
1168     'Perl::OSType' => {
1169         'DISTRIBUTION' => 'DAGOLDEN/Perl-OSType-1.006.tar.gz',
1170         'FILES'        => q[cpan/Perl-OSType],
1171         'EXCLUDED'     => [qw(tidyall.ini), qr/^xt/, qr{^t/00-}],
1172         'UPSTREAM'     => 'cpan',
1173     },
1174
1175     'perldtrace' => {
1176         'MAINTAINER' => 'SARTAK',
1177         'FILES'      => q[pod/perldtrace.pod],
1178         'UPSTREAM'   => 'blead',
1179     },
1180
1181     'perlebcdic' => {
1182         'MAINTAINER' => 'PVHP',
1183         'FILES'      => q[pod/perlebcdic.pod],
1184         'UPSTREAM'   => undef,
1185     },
1186
1187     'perlfaq' => {
1188         'DISTRIBUTION' => 'LLAP/perlfaq-5.0150044.tar.gz',
1189         'FILES'        => q[cpan/perlfaq],
1190         'EXCLUDED'     => [
1191             qw( t/release-pod-syntax.t
1192                 t/release-eol.t
1193                 t/release-no-tabs.t
1194                 )
1195         ],
1196         'UPSTREAM' => 'cpan',
1197     },
1198
1199     'PerlIO' => {
1200         'FILES'      => q[lib/PerlIO.pm],
1201         'UPSTREAM'   => undef,
1202     },
1203
1204     'PerlIO::encoding' => {
1205         'FILES'      => q[ext/PerlIO-encoding],
1206         'UPSTREAM'   => 'blead',
1207     },
1208
1209     'PerlIO::mmap' => {
1210         'FILES'      => q[ext/PerlIO-mmap],
1211         'UPSTREAM'   => 'blead',
1212     },
1213
1214     'PerlIO::scalar' => {
1215         'FILES'      => q[ext/PerlIO-scalar],
1216         'UPSTREAM'   => 'blead',
1217     },
1218
1219     'PerlIO::via' => {
1220         'FILES'      => q[ext/PerlIO-via],
1221         'UPSTREAM'   => 'blead',
1222     },
1223
1224     'PerlIO::via::QuotedPrint' => {
1225         'DISTRIBUTION' => 'ELIZABETH/PerlIO-via-QuotedPrint-0.07.tar.gz',
1226         'FILES'        => q[cpan/PerlIO-via-QuotedPrint],
1227
1228         # Waiting to be merged upstream: see CPAN RT#54047
1229         'CUSTOMIZED'   => [
1230             qw( t/QuotedPrint.t
1231                 ),
1232         ],
1233
1234         'UPSTREAM'     => undef,
1235     },
1236
1237     'perlpacktut' => {
1238         'MAINTAINER' => 'laun',
1239         'FILES'      => q[pod/perlpacktut.pod],
1240         'UPSTREAM'   => undef,
1241     },
1242
1243     'perlpodspec' => {
1244         'MAINTAINER' => 'SBURKE',
1245         'FILES'      => q[pod/perlpodspec.pod],
1246         'UPSTREAM'   => undef,
1247     },
1248
1249     'perlre' => {
1250         'MAINTAINER' => 'ABIGAIL',
1251         'FILES'      => q[pod/perlrecharclass.pod
1252                  pod/perlrebackslash.pod],
1253         'UPSTREAM' => undef,
1254     },
1255
1256     'perlreapi' => {
1257         'MAINTAINER' => 'AVAR',
1258         'FILES'      => q[pod/perlreapi.pod],
1259         'UPSTREAM'   => undef,
1260     },
1261
1262     'perlreftut' => {
1263         'MAINTAINER' => 'MJD',
1264         'FILES'      => q[pod/perlreftut.pod],
1265         'UPSTREAM'   => 'blead',
1266     },
1267
1268     'perlthrtut' => {
1269         'MAINTAINER' => 'ELIZABETH',
1270         'FILES'      => q[pod/perlthrtut.pod],
1271         'UPSTREAM'   => undef,
1272     },
1273
1274     'Pod::Checker' => {
1275         'DISTRIBUTION' => 'MAREKR/Pod-Checker-1.60.tar.gz',
1276         'FILES'        => q[cpan/Pod-Checker],
1277         'UPSTREAM'     => 'cpan',
1278     },
1279
1280     'Pod::Escapes' => {
1281         'DISTRIBUTION' => 'SBURKE/Pod-Escapes-1.04.tar.gz',
1282         'FILES'        => q[cpan/Pod-Escapes],
1283         'UPSTREAM'     => undef,
1284     },
1285
1286     'Pod::Functions' => {
1287         'FILES'      => q[ext/Pod-Functions],
1288         'UPSTREAM'   => 'blead',
1289     },
1290
1291     'Pod::Html' => {
1292         'FILES'      => q[ext/Pod-Html],
1293         'UPSTREAM'   => 'blead',
1294     },
1295
1296     'Pod::Parser' => {
1297         'DISTRIBUTION' => 'MAREKR/Pod-Parser-1.61.tar.gz',
1298         'FILES'        => q[cpan/Pod-Parser],
1299         'UPSTREAM'     => 'cpan',
1300     },
1301
1302     'Pod::Perldoc' => {
1303         'DISTRIBUTION' => 'MALLEN/Pod-Perldoc-3.20.tar.gz',
1304         'FILES'        => q[cpan/Pod-Perldoc],
1305
1306         # in blead, the perldoc executable is generated by perldoc.PL
1307         # instead
1308         # XXX We can and should fix this, but clean up the DRY-failure in utils
1309         # first
1310         'EXCLUDED' => ['perldoc'],
1311         'UPSTREAM' => 'cpan',
1312     },
1313
1314     'Pod::Simple' => {
1315         'DISTRIBUTION' => 'DWHEELER/Pod-Simple-3.28.tar.gz',
1316         'FILES'        => q[cpan/Pod-Simple],
1317         'UPSTREAM'     => 'cpan',
1318     },
1319
1320     'Pod::Usage' => {
1321         'DISTRIBUTION' => 'MAREKR/Pod-Usage-1.63.tar.gz',
1322         'FILES'        => q[cpan/Pod-Usage],
1323         'UPSTREAM'     => 'cpan',
1324     },
1325
1326     'podlators' => {
1327         'DISTRIBUTION' => 'RRA/podlators-2.5.3.tar.gz',
1328         'FILES'        => q[cpan/podlators pod/perlpodstyle.pod],
1329
1330         # The perl distribution has pod2man.PL and pod2text.PL,  which are
1331         # run to create pod2man and pod2text, while the CPAN distribution
1332         # just has the post-generated pod2man and pod2text files.
1333         # The following entries attempt to codify that odd fact.
1334         'CUSTOMIZED' => [
1335             qw( scripts/pod2man.PL
1336                 scripts/pod2text.PL
1337                 ),
1338         ],
1339         'MAP' => {
1340             ''                 => 'cpan/podlators/',
1341             'scripts/pod2man'  => 'cpan/podlators/scripts/pod2man.PL',
1342             'scripts/pod2text' => 'cpan/podlators/scripts/pod2text.PL',
1343
1344             # this file lives outside the cpan/ directory
1345             'pod/perlpodstyle.pod' => 'pod/perlpodstyle.pod',
1346         },
1347         'UPSTREAM' => 'cpan',
1348     },
1349
1350     'POSIX' => {
1351         'FILES'      => q[ext/POSIX],
1352         'UPSTREAM'   => 'blead',
1353     },
1354
1355     're' => {
1356         'FILES'      => q[ext/re],
1357         'UPSTREAM'   => 'blead',
1358     },
1359
1360     's2p' => {
1361         'MAINTAINER' => 'laun',
1362         'FILES'      => q[x2p/s2p.PL],
1363         'UPSTREAM'   => undef,
1364     },
1365
1366     'Safe' => {
1367         'DISTRIBUTION' => 'RGARCIA/Safe-2.35.tar.gz',
1368         'FILES'        => q[dist/Safe],
1369         'UPSTREAM'     => 'blead',
1370     },
1371
1372     'Scalar-List-Utils' => {
1373         'DISTRIBUTION' => 'PEVANS/Scalar-List-Utils-1.33.tar.gz',
1374         'FILES'    => q[cpan/List-Util],
1375         'EXCLUDED' => [
1376             qr{^inc/Module/},
1377             qr{^inc/Test/},
1378             'mytypemap',
1379         ],
1380         'UPSTREAM' => 'cpan',
1381     },
1382
1383     'SDBM_File' => {
1384         'FILES'      => q[ext/SDBM_File],
1385         'UPSTREAM'   => 'blead',
1386     },
1387
1388     'Search::Dict' => {
1389         'DISTRIBUTION' => 'DAGOLDEN/Search-Dict-1.07.tar.gz',
1390         'FILES'        => q[dist/Search-Dict],
1391         'EXCLUDED'     => [qr{^t/release-.*\.t},qr{^README\..*}],
1392         'UPSTREAM'     => 'blead',
1393     },
1394
1395     'SelfLoader' => {
1396         'DISTRIBUTION' => 'SMUELLER/SelfLoader-1.20.tar.gz',
1397         'FILES'        => q[dist/SelfLoader],
1398         'EXCLUDED'     => ['t/00pod.t'],
1399         'UPSTREAM'     => 'blead',
1400     },
1401
1402     'sigtrap' => {
1403         'FILES'      => q[lib/sigtrap.{pm,t}],
1404         'UPSTREAM'   => 'blead',
1405     },
1406
1407     'Socket' => {
1408         'DISTRIBUTION' => 'PEVANS/Socket-2.012.tar.gz',
1409         'FILES'        => q[cpan/Socket],
1410         'UPSTREAM'     => 'cpan',
1411     },
1412
1413     'Storable' => {
1414         'DISTRIBUTION' => 'AMS/Storable-2.45.tar.gz',
1415         'FILES'        => q[dist/Storable],
1416         'EXCLUDED'     => [qr{^t/Test/}],
1417         'UPSTREAM'     => 'blead',
1418     },
1419
1420     'Sys::Hostname' => {
1421         'FILES'      => q[ext/Sys-Hostname],
1422         'UPSTREAM'   => 'blead',
1423     },
1424
1425     'Sys::Syslog' => {
1426         'DISTRIBUTION' => 'SAPER/Sys-Syslog-0.33.tar.gz',
1427         'FILES'        => q[cpan/Sys-Syslog],
1428         'EXCLUDED'     => [
1429             qr{^eg/},
1430             qw( t/data-validation.t
1431                 t/distchk.t
1432                 t/pod.t
1433                 t/podcover.t
1434                 t/podspell.t
1435                 t/portfs.t
1436                 win32/PerlLog.RES
1437                 ),
1438         ],
1439         'UPSTREAM'   => 'cpan',
1440     },
1441
1442     'Term::ANSIColor' => {
1443         'DISTRIBUTION' => 'RRA/Term-ANSIColor-4.02.tar.gz',
1444         'FILES'        => q[cpan/Term-ANSIColor],
1445         'EXCLUDED'     => [
1446             qr{^tests/},
1447             qr{^examples/},
1448             qr{^t/data/},
1449             qw( t/aliases-env.t
1450                 t/critic.t
1451                 t/minimum-version.t
1452                 t/pod-spelling.t
1453                 t/pod-coverage.t
1454                 t/pod.t
1455                 t/strict.t
1456                 t/synopsis.t
1457                 ),
1458         ],
1459         'UPSTREAM' => 'cpan',
1460     },
1461
1462     'Term::Cap' => {
1463         'DISTRIBUTION' => 'JSTOWE/Term-Cap-1.12.tar.gz',
1464         'FILES'        => q[cpan/Term-Cap],
1465
1466         # Waiting to be merged upstream: see CPAN RT#73447
1467         'CUSTOMIZED'   => [
1468             qw( Cap.pm
1469                 test.pl
1470                 ),
1471         ],
1472
1473         'UPSTREAM'     => undef,
1474     },
1475
1476     'Term::Complete' => {
1477         'DISTRIBUTION' => 'FLORA/Term-Complete-1.402.tar.gz',
1478         'FILES'        => q[dist/Term-Complete],
1479         'EXCLUDED'     => [qr{^t/release-.*\.t}],
1480         'UPSTREAM'     => 'blead',
1481     },
1482
1483     'Term::ReadLine' => {
1484         'DISTRIBUTION' => 'FLORA/Term-ReadLine-1.14.tar.gz',
1485         'FILES'        => q[dist/Term-ReadLine],
1486         'EXCLUDED'     => [qr{^t/release-.*\.t}],
1487         'UPSTREAM'     => 'blead',
1488     },
1489
1490     'Test' => {
1491         'DISTRIBUTION' => 'JESSE/Test-1.26.tar.gz',
1492         'FILES'        => q[cpan/Test],
1493         'UPSTREAM'     => 'cpan',
1494     },
1495
1496     'Test::Harness' => {
1497         'DISTRIBUTION' => 'OVID/Test-Harness-3.29.tar.gz',
1498         'FILES'        => q[cpan/Test-Harness],
1499         'EXCLUDED'     => [
1500             qr{^examples/},
1501             qr{^inc/},
1502             qr{^t/lib/Test/},
1503             qr{^xt/},
1504             qw( Changes-2.64
1505                 NotBuild.PL
1506                 HACKING.pod
1507                 perlcriticrc
1508                 t/lib/if.pm
1509                 ),
1510         ],
1511         'UPSTREAM'   => 'cpan',
1512     },
1513
1514     'Test::Simple' => {
1515         'DISTRIBUTION' => 'MSCHWERN/Test-Simple-0.98.tar.gz',
1516         'FILES'        => q[cpan/Test-Simple],
1517         'EXCLUDED'     => [
1518             qw( .perlcriticrc
1519                 .perltidyrc
1520                 t/00compile.t
1521                 t/pod.t
1522                 t/pod-coverage.t
1523                 t/Builder/reset_outputs.t
1524                 lib/Test/Builder/IO/Scalar.pm
1525                 ),
1526         ],
1527
1528         'CUSTOMIZED'   => [
1529             # Waiting to be merged upstream: see CPAN RT#79762
1530             't/fail-more.t',
1531
1532             # Waiting to be merged upstream: see PERL RT#119825
1533             'lib/Test/Builder.pm',
1534             'lib/Test/Builder/Module.pm',
1535             'lib/Test/More.pm',
1536             'lib/Test/Simple.pm',
1537         ],
1538
1539         'UPSTREAM' => 'cpan',
1540     },
1541
1542     'Text::Abbrev' => {
1543         'DISTRIBUTION' => 'FLORA/Text-Abbrev-1.02.tar.gz',
1544         'FILES'        => q[dist/Text-Abbrev],
1545         'EXCLUDED'     => [qr{^t/release-.*\.t}],
1546         'UPSTREAM'     => 'blead',
1547     },
1548
1549     'Text::Balanced' => {
1550         'DISTRIBUTION' => 'ADAMK/Text-Balanced-2.02.tar.gz',
1551         'FILES'        => q[cpan/Text-Balanced],
1552         'EXCLUDED'     => [
1553             qw( t/97_meta.t
1554                 t/98_pod.t
1555                 t/99_pmv.t
1556                 ),
1557         ],
1558
1559         # Waiting to be merged upstream: see CPAN RT#87788
1560         'CUSTOMIZED'   => [
1561             qw( t/01_compile.t
1562                 t/02_extbrk.t
1563                 t/03_extcbk.t
1564                 t/04_extdel.t
1565                 t/05_extmul.t
1566                 t/06_extqlk.t
1567                 t/07_exttag.t
1568                 t/08_extvar.t
1569                 t/09_gentag.t
1570                 ),
1571         ],
1572
1573         'UPSTREAM' => 'cpan',
1574     },
1575
1576     'Text::ParseWords' => {
1577         'DISTRIBUTION' => 'CHORNY/Text-ParseWords-3.29.tar.gz',
1578         'FILES'        => q[cpan/Text-ParseWords],
1579         'EXCLUDED'     => ['t/pod.t'],
1580
1581         # Waiting to be merged upstream: see CPAN RT#50929
1582         'CUSTOMIZED'   => [
1583             qw( t/ParseWords.t
1584                 t/taint.t
1585                 ),
1586         ],
1587
1588         # For the benefit of make_ext.pl, we have to have this accessible:
1589         'MAP' => {
1590             'ParseWords.pm' => 'cpan/Text-ParseWords/lib/Text/ParseWords.pm',
1591             ''              => 'cpan/Text-ParseWords/',
1592         },
1593         'UPSTREAM' => undef,
1594     },
1595
1596     'Text-Tabs+Wrap' => {
1597         'DISTRIBUTION' => 'MUIR/modules/Text-Tabs+Wrap-2013.0523.tar.gz',
1598         'FILES'        => q[cpan/Text-Tabs],
1599         'EXCLUDED'   => [
1600             qr/^lib\.old/,
1601             't/dnsparks.t',    # see af6492bf9e
1602         ],
1603         'MAP'          => {
1604             ''                        => 'cpan/Text-Tabs/',
1605             'lib.modern/Text/Tabs.pm' => 'cpan/Text-Tabs/lib/Text/Tabs.pm',
1606             'lib.modern/Text/Wrap.pm' => 'cpan/Text-Tabs/lib/Text/Wrap.pm',
1607         },
1608         'UPSTREAM'   => 'cpan',
1609     },
1610
1611     'Thread::Queue' => {
1612         'DISTRIBUTION' => 'JDHEDDEN/Thread-Queue-3.02.tar.gz',
1613         'FILES'        => q[dist/Thread-Queue],
1614         'EXCLUDED'     => [
1615             qr{^examples/},
1616             qw( t/00_load.t
1617                 t/99_pod.t
1618                 t/test.pl
1619                 ),
1620         ],
1621         'UPSTREAM' => 'blead',
1622     },
1623
1624     'Thread::Semaphore' => {
1625         'DISTRIBUTION' => 'JDHEDDEN/Thread-Semaphore-2.12.tar.gz',
1626         'FILES'        => q[dist/Thread-Semaphore],
1627         'EXCLUDED'     => [
1628             qw( examples/semaphore.pl
1629                 t/00_load.t
1630                 t/99_pod.t
1631                 t/test.pl
1632                 ),
1633         ],
1634         'UPSTREAM' => 'blead',
1635     },
1636
1637     'threads' => {
1638         'DISTRIBUTION' => 'JDHEDDEN/threads-1.89.tar.gz',
1639         'FILES'        => q[dist/threads],
1640         'EXCLUDED'     => [
1641             qr{^examples/},
1642             qw( t/pod.t
1643                 t/test.pl
1644                 threads.h
1645                 ),
1646         ],
1647         'UPSTREAM' => 'blead',
1648     },
1649
1650     'threads::shared' => {
1651         'DISTRIBUTION' => 'JDHEDDEN/threads-shared-1.43.tar.gz',
1652         'FILES'        => q[dist/threads-shared],
1653         'EXCLUDED'     => [
1654             qw( examples/class.pl
1655                 shared.h
1656                 t/pod.t
1657                 t/test.pl
1658                 ),
1659         ],
1660         'UPSTREAM' => 'blead',
1661     },
1662
1663     'Tie::File' => {
1664         'DISTRIBUTION' => 'TODDR/Tie-File-0.98.tar.gz',
1665         'FILES'        => q[dist/Tie-File],
1666         'UPSTREAM'     => 'blead',
1667     },
1668
1669     'Tie::Hash' => {
1670         'FILES'      => q[lib/Tie/Hash.{pm,t}],
1671         'UPSTREAM'   => 'blead',
1672     },
1673
1674     'Tie::Hash::NamedCapture' => {
1675         'FILES'      => q[ext/Tie-Hash-NamedCapture],
1676         'UPSTREAM'   => 'blead',
1677     },
1678
1679     'Tie::Memoize' => {
1680         'FILES'      => q[ext/Tie-Memoize],
1681         'UPSTREAM'   => 'blead',
1682     },
1683
1684     'Tie::RefHash' => {
1685         'DISTRIBUTION' => 'FLORA/Tie-RefHash-1.39.tar.gz',
1686         'FILES'        => q[cpan/Tie-RefHash],
1687         'UPSTREAM'     => 'cpan',
1688     },
1689
1690     'Time::HiRes' => {
1691         'DISTRIBUTION' => 'ZEFRAM/Time-HiRes-1.9726.tar.gz',
1692         'FILES'        => q[cpan/Time-HiRes],
1693         'UPSTREAM'     => 'cpan',
1694     },
1695
1696     'Time::Local' => {
1697         'DISTRIBUTION' => 'DROLSKY/Time-Local-1.2300.tar.gz',
1698         'FILES'        => q[cpan/Time-Local],
1699         'EXCLUDED'     => [
1700             qw( t/pod-coverage.t
1701                 t/pod.t
1702                 ),
1703             qr{^t/release-.*\.t},
1704         ],
1705         'UPSTREAM' => 'cpan',
1706     },
1707
1708     'Time::Piece' => {
1709         'DISTRIBUTION' => 'RJBS/Time-Piece-1.23.tar.gz',
1710         'FILES'        => q[cpan/Time-Piece],
1711         'UPSTREAM'     => undef,
1712     },
1713
1714     'Unicode::Collate' => {
1715         'DISTRIBUTION' => 'SADAHIRO/Unicode-Collate-0.99.tar.gz',
1716         'FILES'        => q[cpan/Unicode-Collate],
1717         'EXCLUDED'     => [
1718             qr{N$},
1719             qr{^data/},
1720             qr{^gendata/},
1721             qw( disableXS
1722                 enableXS
1723                 mklocale
1724                 ),
1725         ],
1726         'UPSTREAM' => 'cpan',
1727     },
1728
1729     'Unicode::Normalize' => {
1730         'DISTRIBUTION' => 'SADAHIRO/Unicode-Normalize-1.17.tar.gz',
1731         'FILES'        => q[cpan/Unicode-Normalize],
1732         'EXCLUDED'     => [
1733             qw( MANIFEST.N
1734                 Normalize.pmN
1735                 disableXS
1736                 enableXS
1737                 ),
1738         ],
1739         'UPSTREAM' => 'cpan',
1740     },
1741
1742     'Unicode::UCD' => {
1743         'FILES'      => q[lib/Unicode/UCD.{pm,t}],
1744         'UPSTREAM'   => 'blead',
1745     },
1746
1747     'version' => {
1748         'DISTRIBUTION' => 'JPEACOCK/version-0.9904.tar.gz',
1749         'FILES'        => q[cpan/version],
1750         'EXCLUDED' => [
1751             qr{^vutil/},
1752             'lib/version/typemap',
1753             't/survey_locales',
1754             'vperl/vpp.pm',
1755         ],
1756
1757         # Waiting to be merged upstream: see CPAN RT#87513
1758         'CUSTOMIZED'   => [
1759             qw( lib/version.pm
1760                 t/07locale.t
1761                 t/08_corelist.t
1762                 ),
1763         ],
1764
1765         'UPSTREAM' => undef,
1766     },
1767
1768     'vms' => {
1769         'MAINTAINER' => 'CBERRY',
1770         'FILES'      => q[vms configure.com README.vms],
1771         'UPSTREAM'   => undef,
1772     },
1773
1774     'VMS::DCLsym' => {
1775         'MAINTAINER' => 'CBERRY',
1776         'FILES'      => q[ext/VMS-DCLsym],
1777         'UPSTREAM'   => undef,
1778     },
1779
1780     'VMS::Filespec' => {
1781         'FILES'      => q[ext/VMS-Filespec],
1782         'UPSTREAM'   => undef,
1783     },
1784
1785     'VMS::Stdio' => {
1786         'MAINTAINER' => 'CBERRY',
1787         'FILES'      => q[ext/VMS-Stdio],
1788         'UPSTREAM'   => undef,
1789     },
1790
1791     'warnings' => {
1792         'MAINTAINER' => 'PMQS',
1793         'FILES'      => q[regen/warnings.pl
1794                  lib/warnings.{pm,t}
1795                  lib/warnings
1796                  t/lib/warnings
1797                 ],
1798         'UPSTREAM' => 'blead',
1799     },
1800
1801     'win32' => {
1802         'MAINTAINER' => 'JDB',
1803         'FILES'      => q[win32 t/win32 README.win32 ext/Win32CORE],
1804         'UPSTREAM'   => undef,
1805     },
1806
1807     'Win32' => {
1808         'DISTRIBUTION' => "JDB/Win32-0.47.tar.gz",
1809         'FILES'        => q[cpan/Win32],
1810         'UPSTREAM'     => 'cpan',
1811     },
1812
1813     'Win32API::File' => {
1814         'DISTRIBUTION' => 'CHORNY/Win32API-File-0.1201.tar.gz',
1815         'FILES'        => q[cpan/Win32API-File],
1816         'EXCLUDED'     => [
1817             qr{^ex/},
1818             't/pod.t',
1819         ],
1820         'UPSTREAM' => 'cpan',
1821     },
1822
1823     'XS::Typemap' => {
1824         'FILES'      => q[ext/XS-Typemap],
1825         'UPSTREAM'   => 'blead',
1826     },
1827
1828     'XSLoader' => {
1829         'DISTRIBUTION' => 'SAPER/XSLoader-0.16.tar.gz',
1830         'FILES'        => q[dist/XSLoader],
1831         'EXCLUDED'     => [
1832             qr{^eg/},
1833             qw( t/00-load.t
1834                 t/01-api.t
1835                 t/distchk.t
1836                 t/pod.t
1837                 t/podcover.t
1838                 t/portfs.t
1839                 ),
1840             'XSLoader.pm',    # we use XSLoader_pm.PL
1841         ],
1842         # Revert UPSTREAM to 'blead' after 0.17 is released
1843         'UPSTREAM' => undef,
1844     },
1845
1846     # this pseudo-module represents all the files under ext/ and lib/
1847     # that aren't otherwise claimed. This means that the following two
1848     # commands will check that every file under ext/ and lib/ is
1849     # accounted for, and that there are no duplicates:
1850     #
1851     #    perl Porting/Maintainers --checkmani lib ext
1852     #    perl Porting/Maintainers --checkmani
1853
1854     '_PERLLIB' => {
1855         'FILES'      => q[
1856                 ext/arybase/
1857                 ext/ExtUtils-Miniperl/
1858                 ext/XS-APItest/
1859                 lib/CORE.pod
1860                 lib/Config.t
1861                 lib/Config/Extensions.{pm,t}
1862                 lib/DB.{pm,t}
1863                 lib/ExtUtils/Embed.pm
1864                 lib/ExtUtils/XSSymSet.pm
1865                 lib/ExtUtils/t/Embed.t
1866                 lib/ExtUtils/typemap
1867                 lib/Internals.t
1868                 lib/Net/hostent.{pm,t}
1869                 lib/Net/netent.{pm,t}
1870                 lib/Net/protoent.{pm,t}
1871                 lib/Net/servent.{pm,t}
1872                 lib/Pod/t/InputObjects.t
1873                 lib/Pod/t/Select.t
1874                 lib/Pod/t/Usage.t
1875                 lib/Pod/t/utils.t
1876                 lib/SelectSaver.{pm,t}
1877                 lib/Symbol.{pm,t}
1878                 lib/Thread.{pm,t}
1879                 lib/Tie/Array.pm
1880                 lib/Tie/Array/
1881                 lib/Tie/ExtraHash.t
1882                 lib/Tie/Handle.pm
1883                 lib/Tie/Handle/
1884                 lib/Tie/Scalar.{pm,t}
1885                 lib/Tie/StdHandle.pm
1886                 lib/Tie/SubstrHash.{pm,t}
1887                 lib/Time/gmtime.{pm,t}
1888                 lib/Time/localtime.{pm,t}
1889                 lib/Time/tm.pm
1890                 lib/UNIVERSAL.pm
1891                 lib/Unicode/README
1892                 lib/User/grent.{pm,t}
1893                 lib/User/pwent.{pm,t}
1894                 lib/blib.{pm,t}
1895                 lib/bytes.{pm,t}
1896                 lib/bytes_heavy.pl
1897                 lib/_charnames.pm
1898                 lib/charnames.{pm,t}
1899                 lib/dbm_filter_util.pl
1900                 lib/deprecate.pm
1901                 lib/dumpvar.{pl,t}
1902                 lib/feature.{pm,t}
1903                 lib/feature/
1904                 lib/filetest.{pm,t}
1905                 lib/h2ph.t
1906                 lib/h2xs.t
1907                 lib/integer.{pm,t}
1908                 lib/less.{pm,t}
1909                 lib/locale.{pm,t}
1910                 lib/open.{pm,t}
1911                 lib/overload/numbers.pm
1912                 lib/overloading.{pm,t}
1913                 lib/perl5db.{pl,t}
1914                 lib/perl5db/
1915                 lib/sort.{pm,t}
1916                 lib/strict.{pm,t}
1917                 lib/subs.{pm,t}
1918                 lib/unicore/
1919                 lib/utf8.{pm,t}
1920                 lib/utf8_heavy.pl
1921                 lib/vars{.pm,.t,_carp.t}
1922                 lib/vmsish.{pm,t}
1923                 ],
1924         'UPSTREAM' => 'blead',
1925     },
1926 );
1927
1928 # legacy CPAN flag
1929 for ( values %Modules ) {
1930     $_->{CPAN} = !!$_->{DISTRIBUTION};
1931 }
1932
1933 # legacy MAINTAINER field
1934 for ( values %Modules ) {
1935     next if exists $_->{MAINTAINER};
1936     if (not exists $_->{DISTRIBUTION} or (defined $_->{UPSTREAM} and $_->{UPSTREAM} eq 'blead')) {
1937         $_->{MAINTAINER} = 'P5P';
1938         $Maintainers{P5P} = 'perl5-porters <perl5-porters@perl.org>';
1939     }
1940     else {
1941         (my $pause_id = $_->{DISTRIBUTION}) =~ s{/.*$}{};
1942         $_->{MAINTAINER} = $pause_id;
1943         $Maintainers{$pause_id} = "<$pause_id\@cpan.org>";
1944     }
1945 }
1946
1947 1;