Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP

Loading…

Find CPAN Module Counts on search.cpan.org #1

Closed
wants to merge 1 commit into from

5 participants

@chromatic

The Perl module stats on cpan.org represent a fraction of the modules on the CPAN. search.cpan.org has the full count.

This patch adds a suggested migration to change the data source for Perl modules.

@miyagawa

Ruby gems and PyPI's modules count distributions not namespaces. So CPAN should also match against Distributions (on search.cpan.org) not Modules.

@perigrin

I'm curious to know where search.cpan.org itself gets the stats. The numbers on http://stats.cpantesters.org/statscpan.html are about 4K higher. The larger number (24K) are roughly what I would expect from a quick scan of a (min)cpan mirror:

$find ~/Dropbox/minicpan/ -type f -name *.tar.gz | wc -l
24361

Isn't it wonderful what a horrible thing trying to make some comparative metrics between languages is?

@wchristian

perigrin, searching in that way you won't get all dists, since some files use zip or tar.bz2 or possible even more different formats. As far as i can tell, search.cpan counts the unique release files mentioned in 02_packages (which, since it serves to count namespaces, has duplicates). So, the correct way, which the author is already aware of at this point is to extract the releases mentioned in 02_packages, strip version information and collapse the remainder.

@edebill edebill closed this
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Commits on Dec 20, 2010
  1. @chromatic
This page is out of date. Refresh to see the latest.
Showing with 15 additions and 0 deletions.
  1. +15 −0 db/migrate/20101220190035_fix_cpan_stats.rb
View
15 db/migrate/20101220190035_fix_cpan_stats.rb
@@ -0,0 +1,15 @@
+class FixCPANStats < ActiveRecord::Migration
+ def self.up
+ r = Repository.find( :first, :conditions => "name = 'CPAN'" )
+ r.url = "http://search.cpan.org/"
+ r.regex = "([\\d,]+) Modules"
+ r.update_count
+ end
+
+ def self.down
+ r = Repository.find( :first, :conditions => "name = 'CPAN'" )
+ r.url = "http://www.cpan.org/"
+ r.regex = "authors ([\\d,]+) modules"
+ r.update_count
+ end
+end
Something went wrong with that request. Please try again.