Perl's module ecosystem is probably the only reason Perl 5 still has any success, and the lack of the ability to run any of it is the main thing holding back Perl 6.

Perl 5 as a language has some nice features: It allows most high-level LISP-ish constructs (except macros, though they can often be faked with stringy eval, Devel::Declare, etc) but with a less insane syntax; its object system is bare-bones (but enough to allow powerful OO systems like Moose to be built on top).

But Perl 5 has some ugly warts too - ambiguous syntax requiring perl to fall back to heuristics in some cases (such as deciding when "{" begins a block, and when it begins an anonymous hash); two-argument open; the fact that built-in exceptions are thrown as strings rather than objects (requiring string parsing if you want to catch and handle them); awful, awful support for shared data in multi-threaded code; etc.

There are some other languages that have many or all of Perl 5's good points, but fewer or none of its drawbacks. Perl 6 and, to a lesser extent, Ruby and Scala are examples.

But they don't have CPAN.

And so Perl 5 wins.

 

As to the current structure of CPAN, I don't really think the internal organisation of the archive is of much importance to most end-users. What's important is that people can type a single, simple command to install a distribution and all its dependencies; what's important is that the right module for a particular task is easily findable; what's important is the QA infrastructure around it (RT, CPAN testers, CPAN ratings, etc).

If you can deliver that, then the actual mechanics of how it's hosted (centralised versus distributed, etc) is irrelevant to most people. If it were hosted on SD cards delivered by carrier pigeon, that would be just fine by me, provided they delivered quickly.

Some people (I think) if they were designing CPAN today... you'd sign in via a Facebook/Twitter login; you'd have to upload via an Javascript-driven form; you'd be listed on the front page if your upload got enough "likes"...

package Cow { use Moo; has name => (is => 'lazy', default => sub { 'Mooington' }) } say Cow->new->name

In reply to Re: Would you stay with Perl if there were no CPAN? by tobyink
in thread Would you stay with Perl if there were no CPAN? by sedusedan

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.