Beefy Boxes and Bandwidth Generously Provided by pair Networks
Keep It Simple, Stupid
 
PerlMonks  

Re: why isn't cpan like npm?

by stevieb (Canon)
on Apr 17, 2018 at 22:19 UTC ( #1213090=note: print w/replies, xml ) Need Help??


in reply to why isn't cpan like npm?

"To date, I fear using CPAN because of past experience having to go through tens of minutes of questions in command line"

Citations please, specific distribution names required. This is not my near 20 year experience. A minute fraction maybe, but that's for your own good.

"1. Why isn't there an NPM for Perl?"

As someone who dabbles in JS/JQuery very, very infrequently, can you elaborate on what NPM is for so that those in this neighbourhood who may be ignorant (like me) can get a better picture?

"2. Why is JSON so popular if Perl already had the same concepts long before JS existed."

JSON, although related to JS by name, is simply a standard data storage format. XML has come into presence as well, but it (imho) sucks. It's just another storage mechanism that works cross-platform. It has nothing to do with Perl at all. In fact, Perl data structures match more closely to JSON structures than any other language. That said, I have given examples of using JSON to transfer serial data between Perl, Python, C, C++, C# ad-infinitum. Perl has core (and external) storage formats, but the ones you may be thinking of are not easily across platforms. Either way, JSON is just as popular as something like SQLite for example... it's just a way to store, transact upon and use data across platforms and languages.

"3. Why is there so few Perl versions for windows..."

berrybrew.

-stevieb

Replies are listed 'Best First'.
Re^2: why isn't cpan like npm?
by marto (Cardinal) on Apr 18, 2018 at 09:28 UTC

    "Citations please, specific distribution names required."

    While some modules do prompt interactively, I think they mean the first time setup when running cpan, as they continue "... before I hopefully can get to entering command lines".

Re^2: why isn't cpan like npm?
by CodeDmitry (Initiate) on Apr 20, 2018 at 15:31 UTC

    1. Here's a direct paste of me running cpan install Parse::Lex, :\ not a very great experience

    quote: As someone who dabbles in JS/JQuery very, very infrequently, can you elaborate on what NPM is for so that those in this neighbourhood who may be ignorant (like me) can get a better picture?

    NPM is a package manager that comes with NodeJS installations. I mention it because I want to understand why Perl, a language with much older and experienced scripting community has so much harder to use package manager than NodeJS.

    quote: Perl data structures match more closely to JSON structures than any other language.

    I have to sidetrack a bit here, Perl modules are largely package based(a weird version of hash tables that are less intuitive to use yet somehow benchmark faster than hash tables). NodeJS modules are just hash tables with a bunch of memory leaks in them.

      You got several replies that said you should be using cpanm instead of cpan. I reiterate it. App::cpanminus is easier, and probably better, than the regular cpan tool in every way I can think. The docs show how it can be bootstrapped to install without using cpan.

      Here I run cpan Parse::Lex on an Intel atom based netbook from >10 years ago, with 1GB RAM (559MB currently in use), note that I've run CPAN before so don't have to tell configure it:

      sudo cpan Parse::Lex [sudo] password for marto: CPAN: Storable loaded ok (v2.53_01) Reading '/home/marto/.local/share/.cpan/Metadata' Database was generated on Fri, 16 Feb 2018 10:41:02 GMT Reading '/home/marto/.local/share/.cpan/sources/authors/01mailrc.txt.g +z' CPAN: Compress::Zlib loaded ok (v2.068) ...................................................................... +......DONE Reading '/home/marto/.local/share/.cpan/sources/modules/02packages.det +ails.txt.gz' Database was generated on Fri, 20 Apr 2018 11:17:02 GMT CPAN: HTTP::Date loaded ok (v6.02) ............. New CPAN.pm version (v2.16) available. [Currently running version is v2.11] You might want to try install CPAN reload cpan to both upgrade CPAN.pm and run the new version without leaving the current session. ...............................................................DONE CPAN: LWP::UserAgent loaded ok (v6.15) Fetching with LWP: http://www.cpan.org/modules/03modlist.data.gz CPAN: YAML loaded ok (v1.15) Reading '/home/marto/.local/share/.cpan/sources/modules/03modlist.data +.gz' DONE Writing /home/marto/.local/share/.cpan/Metadata Running install for module 'Parse::Lex' Fetching with LWP: http://www.cpan.org/authors/id/P/PS/PSCUST/ParseLex-2.21.tar.gz CPAN: Digest::SHA loaded ok (v5.95) Fetching with LWP: http://www.cpan.org/authors/id/P/PS/PSCUST/CHECKSUMS Checksum for /home/marto/.local/share/.cpan/sources/authors/id/P/PS/PS +CUST/ParseLex-2.21.tar.gz ok CPAN: File::Temp loaded ok (v0.2304) CPAN: CPAN::Meta::Requirements loaded ok (v2.140) CPAN: Parse::CPAN::Meta loaded ok (v1.4414) CPAN: CPAN::Meta loaded ok (v2.150005) CPAN: Module::CoreList loaded ok (v5.20151213) Configuring P/PS/PSCUST/ParseLex-2.21.tar.gz with Makefile.PL Checking if your kit is complete... Looks good Warning: prerequisite Parse::Template 3.04 not found. Generating a Unix-style Makefile Writing Makefile for Parse::Lex Writing MYMETA.yml and MYMETA.json PSCUST/ParseLex-2.21.tar.gz /usr/bin/perl Makefile.PL INSTALLDIRS=site -- OK Running make for P/PS/PSCUST/ParseLex-2.21.tar.gz ---- Unsatisfied dependencies detected during ---- ---- PSCUST/ParseLex-2.21.tar.gz ---- Parse::Template [requires] Running install for module 'Parse::Template' Fetching with LWP: http://www.cpan.org/authors/id/P/PS/PSCUST/ParseTemplate-3.08.tar.gz Checksum for /home/marto/.local/share/.cpan/sources/authors/id/P/PS/PS +CUST/ParseTemplate-3.08.tar.gz ok Configuring P/PS/PSCUST/ParseTemplate-3.08.tar.gz with Makefile.PL Checking if your kit is complete... Looks good Generating a Unix-style Makefile Writing Makefile for Parse::Template Writing MYMETA.yml and MYMETA.json PSCUST/ParseTemplate-3.08.tar.gz /usr/bin/perl Makefile.PL INSTALLDIRS=site -- OK Running make for P/PS/PSCUST/ParseTemplate-3.08.tar.gz cp lib/Parse/Template.pm blib/lib/Parse/Template.pm Manifying 1 pod document PSCUST/ParseTemplate-3.08.tar.gz /usr/bin/make -- OK Running make test PERL_DL_NONLAZY=1 "/usr/bin/perl" "-MExtUtils::Command::MM" "-MTest::H +arness" "-e" "undef *Test::Harness::Switches; test_harness(0, 'blib/l +ib', 'blib/arch')" t/*.t t/debug.t ..... ok t/rt_58128.t .. ok t/test1.t ..... ok t/test2.t ..... ok t/test3.t ..... ok t/test4.t ..... ok t/test5.t ..... ok t/test6.t ..... ok All tests successful. Files=8, Tests=32, 2 wallclock secs ( 0.20 usr 0.02 sys + 1.22 cusr + 0.12 csys = 1.56 CPU) Result: PASS PSCUST/ParseTemplate-3.08.tar.gz /usr/bin/make test -- OK Running make install Manifying 1 pod document Installing /usr/local/share/perl/5.22.1/Parse/Template.pm Installing /usr/local/man/man3/Parse::Template.3pm Appending installation info to /usr/lib/i386-linux-gnu/perl/5.22/perll +ocal.pod PSCUST/ParseTemplate-3.08.tar.gz /usr/bin/make install -- OK PSCUST/ParseLex-2.21.tar.gz Has already been unwrapped into directory /home/marto/.local/share/. +cpan/build/ParseLex-2.21-SyvmkU PSCUST/ParseLex-2.21.tar.gz Has already been prepared Running make for P/PS/PSCUST/ParseLex-2.21.tar.gz cp lib/Parse/ALex.pm blib/lib/Parse/ALex.pm cp lib/Parse/LexEvent.pm blib/lib/Parse/LexEvent.pm cp lib/Parse/Token-t.pm blib/lib/Parse/Token-t.pm cp lib/Parse/Token.pm blib/lib/Parse/Token.pm cp lib/Parse/CLex.pm blib/lib/Parse/CLex.pm cp lib/Parse/Lex.pm blib/lib/Parse/Lex.pm cp lib/Parse/Trace.pm blib/lib/Parse/Trace.pm cp lib/Parse/YYLex.pm blib/lib/Parse/YYLex.pm Manifying 7 pod documents PSCUST/ParseLex-2.21.tar.gz /usr/bin/make -- OK Running make test PERL_DL_NONLAZY=1 "/usr/bin/perl" "-MExtUtils::Command::MM" "-MTest::H +arness" "-e" "undef *Test::Harness::Switches; test_harness(0, 'blib/l +ib', 'blib/arch')" t/*.t t/debug.t ..... ok t/rt_58128.t .. ok t/test1.t ..... ok t/test2.t ..... ok t/test3.t ..... ok t/test4.t ..... ok t/test5.t ..... ok t/test6.t ..... ok t/test7.t ..... ok t/test8.t ..... ok All tests successful. Files=10, Tests=29, 3 wallclock secs ( 0.21 usr 0.03 sys + 2.76 cus +r 0.19 csys = 3.19 CPU) Result: PASS PSCUST/ParseLex-2.21.tar.gz /usr/bin/make test -- OK Running make install Manifying 7 pod documents Installing /usr/local/share/perl/5.22.1/Parse/LexEvent.pm Installing /usr/local/share/perl/5.22.1/Parse/Token-t.pm Installing /usr/local/share/perl/5.22.1/Parse/Token.pm Installing /usr/local/share/perl/5.22.1/Parse/Lex.pm Installing /usr/local/share/perl/5.22.1/Parse/CLex.pm Installing /usr/local/share/perl/5.22.1/Parse/YYLex.pm Installing /usr/local/share/perl/5.22.1/Parse/Trace.pm Installing /usr/local/share/perl/5.22.1/Parse/ALex.pm Installing /usr/local/man/man3/Parse::CLex.3pm Installing /usr/local/man/man3/Parse::LexEvent.3pm Installing /usr/local/man/man3/Parse::Token.3pm Installing /usr/local/man/man3/Parse::Trace.3pm Installing /usr/local/man/man3/Parse::ALex.3pm Installing /usr/local/man/man3/Parse::YYLex.3pm Installing /usr/local/man/man3/Parse::Lex.3pm Appending installation info to /usr/lib/i386-linux-gnu/perl/5.22/perll +ocal.pod PSCUST/ParseLex-2.21.tar.gz /usr/bin/make install -- OK

      Are you sure you're not hitting a limit (for example) enforced on your user? Also perl 5.8 is ancient, and as explained earlier, cpanm is much better than cpan. Essentially it looks like you're hitting a system limit and are running a very old perl when the modern world is much better :)

      /usr/lib/perl5/5.8/CPAN/Config.pm initialized.

      that answers the question: youre complaining about Perl from 13 years ago

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1213090]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others browsing the Monastery: (4)
As of 2020-10-25 06:20 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    My favourite web site is:












    Results (249 votes). Check out past polls.

    Notices?