MODULE::CORELIST(3perl)
π Module::CoreList β what modules shipped with versions of perl π
okay bestie, this is the Module::CoreList(3perl) page from the Perl Programmers Reference Guide, and it's literally the lore archive of which modules came bundled with which perl. sit down, hydrate, let's go β¨
πΈ NAME πΈ
Module::CoreList β what modules shipped with versions of perl π«Ά
β¨ SYNOPSIS β¨
use Module::CoreList;
print $Module::CoreList::version{5.00503}{CPAN}; # prints 1.48
print Module::CoreList->first_release('File::Spec');
# prints 5.00405
print Module::CoreList->first_release_by_date('File::Spec');
# prints 5.005
print Module::CoreList->first_release('File::Spec', 0.82);
# prints 5.006001
if (Module::CoreList::is_core('File::Spec')) {
print "File::Spec is a core module\n";
}
print join ', ', Module::CoreList->find_modules(qr/Data/);
# prints 'Data::Dumper'
print join ', ',
Module::CoreList->find_modules(qr/test::h.*::.*s/i, 5.008008);
# prints 'Test::Harness::Assert, Test::Harness::Straps'
print join ", ", @{ $Module::CoreList::families{5.005} };
# prints "5.005, 5.00503, 5.00504"
like. look at that. no cap, that's the whole vibe in nine little snippets π
π¦ DESCRIPTION π¦
Module::CoreList hands you the receipts on which core and dual-life modules shipped with each version of perl. every single one. it's giving encyclopedia but make it slay.
it gives you a bunch of mechanisms for querying this info, so you can pick whichever one matches your mood:
- there's a utility called
corelistthat comes with this module, and it's the convenient way to query from the command-line π - there's a functional programming API for programmers who wanna query the info in code
- and programmers may also go straight at the contained hash structures themselves to find the relevant info
pick your fighter. all three are valid. iykyk π
π FUNCTIONS API π
these are the functions that are available, and the way that⦠you can call them either as plain functions or as class methods, bestie:
Module::CoreList::first_release('File::Spec'); # as a function
Module::CoreList->first_release('File::Spec'); # class method
same energy, two outfits. here's the whole roster:
first_release( MODULE )β behaviour since version 2.11. you gotta pass aMODULEname as an argument, and it returns the perl version where that module first appeared in core, ordered by perl version number. if that module is not in core you getundef(in scalar context) or an empty list (in list context). no module, no entry, no drama πfirst_release_by_date( MODULE )β takes aMODULEname as an argument, and returns the perl version where that module first appeared in core, but ordered by release date. same deal as above:undefin scalar context, empty list in list context, if the module isn't in core.find_modules( REGEX, [ LIST OF PERLS ] )β takes a regex as an argument and returns a list of modules that match the regex you gave. if you only pass a regex, it applies to all modules in all perl versions. optionally you can hand it a list of perl versions to limit the regex search to just those πfind_version( PERL_VERSION )β takes a perl version as an argument. upon successful completion it returns a reference to a hash. each element of that hash has a key which is the name of a module (e.g.,'File::Path') shipped with that version of perl, and a value which is the version number (e.g.,'2.09') of that module which shipped with that version of perl. returnsundefotherwise. πis_core( MODULE, [ MODULE_VERSION, [ PERL_VERSION ] ] )β available in version 2.99 and above. returns true ifMODULEwas bundled with the specified version of Perl. you can optionally specify a minimum version of the module, and you can also specify a version of Perl. if a version of Perl isn't specified,is_core()will use the numeric version of Perl that is running (ie$]). if you wanna specify the version of Perl but don't care about the version of the module, passundeffor the module version β¨is_deprecated( MODULE, PERL_VERSION )β available in version 2.22 and above. returns true ifMODULEis marked as deprecated inPERL_VERSION. ifPERL_VERSIONis omitted, it defaults to the current version of Perl.deprecated_in( MODULE )β available in version 2.77 and above. returns the first perl version where theMODULEwas marked as deprecated. returnsundefif theMODULEhas not been marked as deprecated. πremoved_from( MODULE )β available in version 2.32 and above. takes a module name as an argument, returns the first perl version where that module was removed from core. returnsundefif the given module was never in core or remains in core.removed_from_by_date( MODULE )β available in version 2.32 and above. takes a module name as an argument, returns the first perl version by release date where that module was removed from core. returnsundefif the given module was never in core or remains in core.changes_between( PERL_VERSION, PERL_VERSION )β available in version 2.66 and above. given two perl versions, this returns a list of pairs describing the changes in core module content between them. the list is suitable for storing in a hash. the keys are library names and the values are hashrefs. each hashref has an entry for one or both of"left"and"right", giving the versions of the library in each of the left and right perl distributions.
for example, it might return these data (among others) for the difference between 5.008000 and 5.008001:
'Pod::ParseLink' => { left => '1.05', right => '1.06' },
'Pod::ParseUtils' => { left => '0.22', right => '0.3' },
'Pod::Perldoc' => { right => '3.10' },
'Pod::Perldoc::BaseTo' => { right => undef },
this shows us two libraries being updated and two being added, one of which has an undefined version in the right-hand side version. iconic behaviour honestly π₯
π DATA STRUCTURES π
these are the hash data structures that are available, and yes they're all just sitting there waiting for you:
%Module::CoreList::versionβ a hash of hashes that is keyed on perl version as indicated in$]. the second level hash ismodule => versionpairs.
note, it is possible for the version of a module to be unspecified, whereby the value is undef, so use exists $version{$foo}{$bar} if that's what you're testing for. do not come for me if you checked the value instead, bestie, it's undef, it's always been undef π
starting with 2.10, the special module name "Unicode" refers to the version of the Unicode Character Database bundled with Perl.
%Module::CoreList::deltaβ available in version 3.00 and above. it is a hash of hashes that is keyed on perl version. each keyed hash will have the following keys:
delta_from - a previous perl version that the changes are based on
changed - a hash of module/versions that have changed
removed - a hash of modules that have been removed
%Module::CoreList::releasedβ keyed on perl version, this contains ISO formatted versions of the release dates, as gleaned from perlhist. ποΈ%Module::CoreList::familiesβ new, in 1.96, a hash that clusters known perl releases by their major versions. it's giving family tree, it's giving ancestry.com for perl releases π§%Module::CoreList::deprecatedβ a hash of hashes keyed on perl version and on module name. if a module is defined it indicates that that module is deprecated in that perl version and is scheduled for removal from core at some future point. π%Module::CoreList::upstreamβ a hash that contains information on where patches should be directed for each core module.
UPSTREAM indicates where patches should go. undef implies that this hasn't been discussed for the module at hand. "blead" indicates that the copy of the module in the blead sources is to be considered canonical, "cpan" means that the module on CPAN is to be patched first. "first-come" means that blead can be patched freely if it is in sync with the latest release on CPAN.
%Module::CoreList::bug_trackerβ a hash that contains information on the appropriate bug tracker for each core module.
BUGS is an email or url to post bug reports. for modules with UPSTREAM => 'blead', use <mailto:perl5-porters@perl.org>. rt.cpan.org appears to automatically provide a URL for CPAN modules; any value given here overrides the default: <http://rt.cpan.org/Public/Dist/Display.html?Name=$ModuleName>
β οΈ CAVEATS β οΈ
okay babes, listen up, coverage check:
- Module::CoreList currently covers the
5.000,5.001,5.002,5.003_07,5.004,5.004_05,5.005,5.005_03,5.005_04and5.7.3releases of perl. - all stable releases of perl since
5.6.0are covered. - all development releases of perl since
5.9.0are covered.
so if you're out here querying something older than that, that's on the historical record, not on us π«Ά
π HISTORY π
moved to Changes file. yeah. that's it. that's the whole section. it's giving "we outsourced the lore" β¨
π AUTHOR π
Richard Clamp <richardc@unixbeard.net>
currently maintained by the perl 5 porters <perl5-porters@perl.org>. legends, both. π
β LICENSE β
Copyright (C) 2002-2009 Richard Clamp. All Rights Reserved.
this module is free software; you can redistribute it and/or modify it under the same terms as Perl itself. slay, legally. π
π₯ SEE ALSO π₯
corelistModule::Infoperl<http://perlpunks.de/corelist>
k that's the whole page bestie, you ate it, no crumbs π this was the Module::CoreList(3perl) page from perl v5.44.0, dated 2026-10-17 β go forth and query, mwah ππ
π¦ where this page comes from
- arch rolling: perl 5.44.0-1 Β· Artistic-1.0-Perl AND GPL-1.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms