CPAN::Testers::Data::Addresses - CPAN Testers Addresses Database Manager


  perl \
        [--verbose|v] --config|c=<file> \
        ( [--help|h] \
        | [--update=<file>] \
        | [--reindex] [--lastid=<num>] \
        | [--clean] \
        | [--backup] \
        | [--mailrc|m=<file>] [--month=<string>] [--match] ) \
        [--logfile=<file>] [--logclean=(0|1)]


This program allows the user to update the tester addresses database, or search it, based on a restricted set of criteria.


The schema for the MySQL database is below:

    CREATE TABLE `ixaddress` (
      `id` int(10) unsigned NOT NULL,
      `guid` varchar(40) NOT NULL DEFAULT '',
      `addressid` int(10) unsigned NOT NULL,
      `fulldate` varchar(32) DEFAULT NULL,
      PRIMARY KEY (`id`,`guid`),
      KEY `IXGUID` (`guid`),
      KEY `IXADDR` (`addressid`)

    CREATE TABLE `tester_address` (
      `addressid` int(10) unsigned NOT NULL AUTO_INCREMENT,
      `testerid` int(10) unsigned NOT NULL DEFAULT '0',
      `address` varchar(255) NOT NULL,
      `email` varchar(255) DEFAULT NULL,
      PRIMARY KEY (`addressid`),
      KEY `IXTESTER` (`testerid`),
      KEY `IXADDRESS` (`address`)

    CREATE TABLE `tester_profile` (
      `testerid` int(10) unsigned NOT NULL AUTO_INCREMENT,
      `name` varchar(255) DEFAULT NULL,
      `pause` varchar(255) DEFAULT NULL,
      PRIMARY KEY (`testerid`),
      KEY `IXNAME` (`name`),
      KEY `IXPAUSE` (`pause`)

The address field is the same as the tester field in the cpanstats table, while the email field is the extracted email address field only.


The Constructor

  • new

    Instatiates the object CPAN::Testers::Data::Addresses:

      my $obj = CPAN::Testers::Data::Addresses->new();

Public Methods

  • process

    Based on accessor settings will run the appropriate methods for the current execution.

  • search

    Search the tables for unmapped entries, suggesting appropriate mappings.

  • update

    Updates the tester_profiles and tester_address entries as defined by the reference source text file.

  • reindex

    Indexes the ixaddress table, updating the tester_address table if appropriate.

  • clean

    De-duplicates addresses.

  • backup

    Provides backup files of the uploads database.

Accessor Methods

  • logfile

    Path to output log file for progress and debugging messages.

  • logclean

    If set to a true value will create/overwrite the logfile, otherwise will append any messages.

  • lastfile

    Path to the file containing the last cpanstats record ID processed.

Internal Methods


Loads all the data files with addresses against we can match, then load all the addresses listed in the DB that we need to match against.


Given all the possible mappings, attempts to match unmapped addresses.

Prints the suggested mappings, and those remaining unmapped addresses.


Atempts to map an address to a known CPAN author, then to one that already exists in the database, and finally to one that is known within the CPAN Authors index.


Attempts to map an address based on its domain.


Attempts to map any name listed in the address to a tester profile.

Private Methods

  • _lastid

    Sets or returns the last cpanstats record ID processed.

  • _extract_email

    Extracts an email from a text string.

  • _init_options

    Initialises internal configuration settings based on command line options, API options and configuration file settings.

  • _help

    Provides a help screen.

  • _log

    Writes audit messages to a log file.


Whether you have a common platform or a very unusual one, you can help by testing modules you install and submitting reports. There are plenty of module authors who could use test reports and helpful feedback on their modules and distributions.

If you'd like to get involved, please take a look at the CPAN Testers Wiki, where you can learn how to install and configure one of the recommended smoke tools.

For further help and advice, please subscribe to the the CPAN Testers discussion mailing list.

  CPAN Testers Wiki
  CPAN Testers Discuss mailing list


There are no known bugs at the time of this release. However, if you spot a bug or are experiencing difficulties, that is not explained within the POD documentation, please send an email to However, it would help greatly if you are able to pinpoint problems or even supply a patch.

Fixes are dependent upon their severity and my availability. Should a fix not be forthcoming, please feel free to (politely) remind me.

RT Queue -


CPAN::Testers::Data::Generator, CPAN::Testers::WWW::Statistics,,,


  Barbie, <>
  for Miss Barbell Productions <>.


  Copyright (C) 2009-2014 Barbie for Miss Barbell Productions.

  This module is free software; you can redistribute it and/or
  modify it under the Artistic License 2.0.