info > CPAN::Meta::Prereqs

📖 NAME

CPAN::Meta::Prereqs — a set of distribution prerequisites by phase and type

🚀 Quick Reference

Use CaseCommandDescription
📦 Create empty prereqsCPAN::Meta::Prereqs->newReturns an empty set of prerequisites for incremental building
🔍 Get requirements for a phase/type$prereqs->requirements_for($phase, $type)Returns a CPAN::Meta::Requirements object for the given phase/type
📋 List all phases$prereqs->phasesReturns all phases currently populated
🔬 List types in a phase$prereqs->types_in('runtime')Returns all types in a given phase
🔗 Merge prereqs from another object$prereqs->with_merged_prereqs($other)Returns a new object with merged prereqs (e.g., core + feature)
🧩 Merge requirements across phases/types$prereqs->merged_requirements(\@phases, \@types)Joins requirements into a single CPAN::Meta::Requirements
📄 Convert to plain hash$prereqs->as_string_hashReturns a hashref suitable for dumping into distmeta
🔒 Finalize prereqs$prereqs->finalizeLocks the object against further modification
📝 Clone prereqs$prereqs->cloneReturns a modifiable copy (finalization not preserved)

📚 VERSION

version 2.150010

📝 DESCRIPTION

A CPAN::Meta::Prereqs object represents the prerequisites for a CPAN distribution or one of its optional features. Each set of prereqs is organized by phase and type, as described in CPAN::Meta::Prereqs.

🛠️ METHODS

🏗️ new

my $prereq = CPAN::Meta::Prereqs->new( \%prereq_spec );

This method returns a new set of Prereqs. The input should look like the contents of the prereqs field described in CPAN::Meta::Spec, meaning something more or less like this:

my $prereq = CPAN::Meta::Prereqs->new({
  runtime => {
    requires => {
      'Some::Module' => '1.234',
      ...,
    },
    ...,
  },
  ...,
});

You can also construct an empty set of prereqs with:

my $prereqs = CPAN::Meta::Prereqs->new;

This empty set of prereqs is useful for accumulating new prereqs before finally dumping the whole set into a structure or string.

🔍 requirements_for

my $requirements = $prereqs->requirements_for( $phase, $type );

This method returns a CPAN::Meta::Requirements object for the given phase/type combination. If no prerequisites are registered for that combination, a new CPAN::Meta::Requirements object will be returned, and it may be added to as needed.

If $phase or $type are undefined or otherwise invalid, an exception will be raised.

📋 phases

my @phases = $prereqs->phases;

This method returns the list of all phases currently populated in the prereqs object, suitable for iterating.

🔬 types_in

my @runtime_types = $prereqs->types_in('runtime');

This method returns the list of all types currently populated in the prereqs object for the provided phase, suitable for iterating.

🔗 with_merged_prereqs

my $new_prereqs = $prereqs->with_merged_prereqs( $other_prereqs );

my $new_prereqs = $prereqs->with_merged_prereqs( \@other_prereqs );

This method returns a new CPAN::Meta::Prereqs object in which all the other prerequisites given are merged into the current set. This is primarily provided for combining a distribution's core prereqs with the prereqs of one of its optional features.

The new prereqs object has no ties to the originals, and altering it further will not alter them.

🧩 merged_requirements

my $new_reqs = $prereqs->merged_requirements( \@phases, \@types );
my $new_reqs = $prereqs->merged_requirements( \@phases );
my $new_reqs = $prereqs->merged_requirements();

This method joins together all requirements across a number of phases and types into a new CPAN::Meta::Requirements object. If arguments are omitted, it defaults to runtime, build and test for phases and requires and recommends for types.

📄 as_string_hash

This method returns a hashref containing structures suitable for dumping into a distmeta data structure. It is made up of hashes and strings, only; there will be no Prereqs, CPAN::Meta::Requirements, or version objects inside it.

🔒 is_finalized

This method returns true if the set of prereqs has been marked finalized, and cannot be altered.

🔒 finalize

Calling finalize on a Prereqs object will close it for further modification. Attempting to make any changes that would actually alter the prereqs will result in an exception being thrown.

📝 clone

my $cloned_prereqs = $prereqs->clone;

This method returns a Prereqs object that is identical to the original object, but can be altered without affecting the original object. Finalization does not survive cloning, meaning that you may clone a finalized set of prereqs and then modify the clone.

🐛 BUGS

Please report any bugs or features using the CPAN Request Tracker. Bugs can be submitted through the web interface at http://rt.cpan.org/Dist/Display.html?Queue=CPAN-Meta

When submitting a bug or request, please include a test-file or a patch to an existing test-file that illustrates the bug or desired feature.

👤 AUTHORS

📜 COPYRIGHT AND LICENSE

This software is copyright (c) 2010 by David Golden, Ricardo Signes, Adam Kennedy and Contributors.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.

perl v5.34.0 — 2026-06-23 — CPAN::Meta::Prereqs(3perl)

CPAN::Meta::Prereqs
📖 NAME 🚀 Quick Reference 📚 VERSION 📝 DESCRIPTION 🛠️ METHODS
🏗️ new 🔍 requirements_for 📋 phases 🔬 types_in 🔗 with_merged_prereqs 🧩 merged_requirements 📄 as_string_hash 🔒 is_finalized 🔒 finalize 📝 clone
🐛 BUGS 👤 AUTHORS 📜 COPYRIGHT AND LICENSE

Generated by phpman v4.9.26-5-g7740029 Author: Che Dong Under GNU General Public License
2026-08-14 21:25 @2600:1f28:365:80b0:4d23:66fa:c2bb:7bae
CrawledBy CCBot/2.0 (https://commoncrawl.org/faq/)
Valid XHTML 1.0 Transitional!Valid CSS!