This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
point out "corelist --diff" in perldelta
[perl5.git] / dist / Module-CoreList / lib / Module / CoreList.pod
CommitLineData
dd4d388c
CBW
1=head1 NAME
2
3Module::CoreList - what modules shipped with versions of perl
4
5=head1 SYNOPSIS
6
7 use Module::CoreList;
8
9 print $Module::CoreList::version{5.00503}{CPAN}; # prints 1.48
10
11 print Module::CoreList->first_release('File::Spec'); # prints 5.00405
12 print Module::CoreList->first_release_by_date('File::Spec'); # prints 5.005
13 print Module::CoreList->first_release('File::Spec', 0.82); # prints 5.006001
14
15 print join ', ', Module::CoreList->find_modules(qr/Data/);
16 # prints 'Data::Dumper'
17 print join ', ', Module::CoreList->find_modules(qr/test::h.*::.*s/i, 5.008008);
18 # prints 'Test::Harness::Assert, Test::Harness::Straps'
19
20 print join ", ", @{ $Module::CoreList::families{5.005} };
21 # prints "5.005, 5.00503, 5.00504"
22
23=head1 DESCRIPTION
24
25Module::CoreList provides information on which core and dual-life modules shipped
26with each version of L<perl>.
27
28It provides a number of mechanisms for querying this information.
29
30There is a utility called L<corelist> provided with this module
31which is a convenient way of querying from the command-line.
32
33There is a functional programming API available for programmers to query
34information.
35
36Programmers may also query the contained hash structures to find relevant
37information.
38
39=head1 FUNCTIONS API
40
41These are the functions that are available, they may either be called as functions or class methods:
42
43 Module::CoreList::first_release('File::Spec'); # as a function
44
45 Module::CoreList->first_release('File::Spec'); # class method
46
47=over
48
49=item C<first_release( MODULE )>
50
51Behaviour since version 2.11
52
53Requires a MODULE name as an argument, returns the perl version when that module first
54appeared in core as ordered by perl version number or undef ( in scalar context )
55or an empty list ( in list context ) if that module is not in core.
56
57=item C<first_release_by_date( MODULE )>
58
59Requires a MODULE name as an argument, returns the perl version when that module first
60appeared in core as ordered by release date or undef ( in scalar context )
61or an empty list ( in list context ) if that module is not in core.
62
63=item C<find_modules( REGEX, [ LIST OF PERLS ] )>
64
65Takes a regex as an argument, returns a list of modules that match the regex given.
66If only a regex is provided applies to all modules in all perl versions. Optionally
67you may provide a list of perl versions to limit the regex search.
68
69=item C<find_version( PERL_VERSION )>
70
71Takes a perl version as an argument. Returns that perl version if it exists or C<undef>
72otherwise.
73
74=item C<is_deprecated( MODULE, PERL_VERSION )>
75
76Available in version 2.22 and above.
77
78Returns true if MODULE is marked as deprecated in PERL_VERSION. If PERL_VERSION is
79omitted, it defaults to the current version of Perl.
80
81=item C<removed_from( MODULE )>
82
83Available in version 2.32 and above
84
85Takes a module name as an argument, returns the first perl version where that module
86was removed from core. Returns undef if the given module was never in core or remains
87in core.
88
89=item C<removed_from_by_date( MODULE )>
90
91Available in version 2.32 and above
92
93Takes a module name as an argument, returns the first perl version by release date where that module
94was removed from core. Returns undef if the given module was never in core or remains
95in core.
96
97=back
98
99=head1 DATA STRUCTURES
100
101These are the hash data structures that are available:
102
103=over
104
105=item C<%Module::CoreList::version>
106
107A hash of hashes that is keyed on perl version as indicated
108in $]. The second level hash is module => version pairs.
109
110Note, it is possible for the version of a module to be unspecified,
111whereby the value is C<undef>, so use C<exists $version{$foo}{$bar}> if
112that's what you're testing for.
113
114Starting with 2.10, the special module name C<Unicode> refers to the version of
115the Unicode Character Database bundled with Perl.
116
117=item C<%Module::CoreList::released>
118
119Keyed on perl version this contains ISO
120formatted versions of the release dates, as gleaned from L<perlhist>.
121
122=item C<%Module::CoreList::families>
123
124New, in 1.96, a hash that
125clusters known perl releases by their major versions.
126
127=item C<%Module::CoreList::deprecated>
128
129A hash of hashes keyed on perl version and on module name.
130If a module is defined it indicates that that module is
131deprecated in that perl version and is scheduled for removal
132from core at some future point.
133
134=item C<%Module::CoreList::upstream>
135
136A hash that contains information on where patches should be directed
137for each core module.
138
139UPSTREAM indicates where patches should go. C<undef> implies
140that this hasn't been discussed for the module at hand.
141C<blead> indicates that the copy of the module in the blead
142sources is to be considered canonical, C<cpan> means that the
143module on CPAN is to be patched first. C<first-come> means
144that blead can be patched freely if it is in sync with the
145latest release on CPAN.
146
147=item C<%Module::CoreList::bug_tracker>
148
149A hash that contains information on the appropriate bug tracker
150for each core module.
151
152BUGS is an email or url to post bug reports. For modules with
153UPSTREAM => 'blead', use perl5-porters@perl.org. rt.cpan.org
154appears to automatically provide a URL for CPAN modules; any value
155given here overrides the default:
156http://rt.cpan.org/Public/Dist/Display.html?Name=$ModuleName
157
158=back
159
160=head1 CAVEATS
161
162Module::CoreList currently covers the 5.000, 5.001, 5.002, 5.003_07,
1635.004, 5.004_05, 5.005, 5.005_03, 5.005_04, 5.6.0, 5.6.1, 5.6.2, 5.7.3,
1645.8.0, 5.8.1, 5.8.2, 5.8.3, 5.8.4, 5.8.5, 5.8.6, 5.8.7, 5.8.8, 5.8.9,
1655.9.0, 5.9.1, 5.9.2, 5.9.3, 5.9.4, 5.9.5, 5.10.0, 5.10.1, 5.11.0, 5.11.1,
1665.11.2, 5.11.3, 5.11.4, 5.11.5, 5.12.0, 5.12.1, 5.12.2, 5.12.3, 5.12.4,
1675.13.0, 5.13.1, 5.13.2, 5.13.3, 5.13.4, 5.13.5, 5.13.6, 5.13.7, 5.13.8,
1685.13.9, 5.13.10, 5.13.11, 5.14.0, 5.14.1, 5.14.2, 5.15.0, 5.15.1, 5.15.2,
d10490f6 1695.15.3, 5.15.4, 5.15.5, 5.15.6, 5.15.7, 5.15.8, 5.15.9 and 5.16.0 releases of perl.
dd4d388c
CBW
170
171=head1 HISTORY
172
173Moved to Changes file.
174
175=head1 AUTHOR
176
177Richard Clamp E<lt>richardc@unixbeard.netE<gt>
178
179Currently maintained by the perl 5 porters E<lt>perl5-porters@perl.orgE<gt>.
180
181=head1 LICENSE
182
183Copyright (C) 2002-2009 Richard Clamp. All Rights Reserved.
184
185This module is free software; you can redistribute it and/or modify it
186under the same terms as Perl itself.
187
188=head1 SEE ALSO
189
190L<corelist>, L<Module::Info>, L<perl>, L<http://perlpunks.de/corelist>
191
192=cut