http://www.perlmonks.org?node_id=1057138

bessarabov has asked for the wisdom of the Perl Monks concerning the following question:

Here the part of META.yml file https://metacpan.org/source/RIBASUSHI/DBIx-Class-0.08250/META.yml :
name: DBIx-Class requires: Class::Accessor::Grouped: 0.10010 Class::C3::Componentised: 1.0009 Class::Inspector: 1.24
I wonder why there is 2 variants of writing the release name, the one with "-" and the one with "::". From my point of view this variant would be more robust:
name: DBIx-Class requires: Class-Accessor-Grouped: 0.10010 Class-C3-Componentised: 1.0009 Class-Inspector: 1.24
How `cpan`, `cpanm` and other programms that work with deps convert "::" verion to the "-" version? For example I don't get it how to convert:
requires: LWP: 0
to the real release name witch is `libwww-perl`

Replies are listed 'Best First'.
Re: META.yml the difference between `name` and `requires`
by Corion (Patriarch) on Oct 06, 2013 at 10:29 UTC

    I think the name is the name of the distribution, while the requires section lists modules (not distributions). This is just me guessing - CPAN::Meta::Spec likely has the gory details.

    To get from a module to its distribution is in 02packages.details.txt, but there likely are CPAN modules that handle this mapping for you. I would look at CPAN::SQLite first, but most likely many of the other modules implement (or reuse) the similar logic.

      META-spec 1.4 is more relevant. CPAN::Meta::Spec is version 2 of the specification and is typically only used in META.json files rather than META.yml. CPAN::Meta::Spec has a more powerful prerequisite specification.

      (PS: can you please fix your </i>?)

      use Moops; class Cow :rw { has name => (default => 'Ermintrude') }; say Cow->new->name