Udpdated checkAUTHORS.pl to expect the output of git log rather than p4; added a...
[p5sagit/p5-mst-13.2.git] / Porting / checkAUTHORS.pl
CommitLineData
5649b9c9 1#!/usr/bin/perl -w
2use strict;
3use Text::Wrap;
4$Text::Wrap::columns = 80;
00229b97 5my ($committer, $patch, $log,$date);
5649b9c9 6use Getopt::Long;
7
2b0ba25f 8my ($rank, $percentage, $cumulative, $reverse, $ta, @authors, %authors,
00229b97 9 %untraced, %patchers, %committers, %real_names);
10my $result = GetOptions ("rank" => \$rank, # rank authors
11 "thanks-applied" => \$ta, # ranks committers
12 "acknowledged=s" => \@authors , # authors files
13 "percentage" => \$percentage, # show as %age
14 "cumulative" => \$cumulative,
15 "reverse" => \$reverse,
16 );
5649b9c9 17
ff4d71b5 18if (!$result or (($rank||0) + ($ta||0) + (@authors ? 1 : 0) != 1) or !@ARGV) {
5649b9c9 19 die <<"EOS";
20$0 --rank Changelogs # rank authors by patches
21$0 --acknowledged <authors file> Changelogs # Display unacknowledged authors
00229b97 22$0 --thanks-applied Changelogs # ranks committers
15b8f96d 23$0 --percentage ... # show rankings as percentages
2b0ba25f 24$0 --cumulative ... # show rankings cumulatively
25$0 --reverse ... # show rankings in reverse
5649b9c9 26Specify stdin as - if needs be. Remember that option names can be abbreviated.
27EOS
28}
29
8513229b 30
31my $prev = "";
32my %map;
33
34while (<DATA>) {
35 chomp;
36 s/\\100/\@/g;
37 $_ = lc;
38 if (my ($correct, $alias) = /^\s*([^#\s]\S*)\s+(.*\S)/) {
8b80c7bd 39 $correct =~ s/^\\043/#/;
8513229b 40 if ($correct eq '+') {$correct = $prev} else {$prev = $correct}
41 $map {$alias} = $correct;
42 }
43}
44
45#
46# Email addresses for we do not have names.
47#
48$map {$_} = "?" for
4bc69901 49 "agrow\100thegotonerd.com",
8513229b 50 "alexander_bluhm\100genua.de",
51 "alexander_gernler\100genua.de",
52 "ammon\100rhythm.com",
8b80c7bd 53 "andrew\100sundale.net",
8513229b 54 "bah\100longitude.com",
55 "bbucklan\100jpl-devvax.jpl.nasa.gov",
a94e4597 56 "ben\100linuxgazette.net",
8513229b 57 "bilbo\100ua.fm",
8b80c7bd 58 "blino\100mandriva.com",
8513229b 59 "bob\100starlabs.net",
60 "bonefish\100cs.tu-berlin.de",
61 "bstrand\100switchmanagement.com",
62 "cygwin\100cygwin.com",
63 "david\100dhaller.de",
64 "dformosa\100dformosa.zeta.org.au",
65 "dgay\100acm.org",
66 "erik\100cs.uni-jena.de",
67 "glasser\100tang-eleven-seventy-nine.mit.edu",
68 "gml4410\100ggr.co.uk",
69 "grommel\100sears.com",
8b80c7bd 70 "ilmari\100vesla.ilmari.org",
8513229b 71 "ilya\100juil.nonet",
72 "info\100lingo.kiev.ua",
73 "jms\100mathras.comcast.net",
a94e4597 74 "johnh\100isi.edu",
8513229b 75 "kan\100dcit.cz",
76 "kaminsky\100math.huji.ac.il",
77 "knew-p5p\100pimb.org",
78 "kvr\100centrum.cz",
a94e4597 79 "lemkemch\100t-online.de",
8513229b 80 "mauzo\100csv.warwick.ac.uk",
81 "merijnb\100ms.com",
82 "mlelstv\100serpens.de",
83 "p.boven\100sara.nl",
84 "padre\100elte.hu",
8b80c7bd 85 "pancho\100pancho.name",
8513229b 86 "perlbug\100veggiechinese.net",
87 "pm\100capmon.dk",
88 "premchai21\100yahoo.com",
89 "pxm\100nubz.org",
90 "raf\100tradingpost.com.au",
91 "scott\100perlcode.org",
92 "smoketst\100hp46t243.cup.hp.com",
93 "yath-perlbug\100yath.de",
94;
95
96#
97# Email addresses for people that don't have an email address in AUTHORS
98# Presumably deliberately?
99#
100
101$map {$_} = '!' for
cf3e690a 102 # Nick Ing-Simmons has passed away (2006-09-25).
103 "nick\100ing-simmons.net",
104 "nik\100tiuk.ti.com",
105 "nick.ing-simmons\100elixent.com",
00229b97 106 "nick\100ni-s.u-net.com",
cf3e690a 107
108 # Iain Truskett has passed away (2003-12-29).
8513229b 109 "perl\100dellah.anu.edu.au",
110 "spoon\100dellah.org",
111 "spoon\100cpan.org",
112
113 # Ton Hospel
114 "me-02\100ton.iguana.be",
115 "perl-5.8.0\100ton.iguana.be",
116 "perl5-porters\100ton.iguana.be",
117
118 # Beau Cox
119 "beau\100beaucox.com",
120
121 # Randy W. Sims
122 "ml-perl\100thepierianspring.org",
123
124 # Yuval Kogman
125 "nothingmuch\100woobling.org",
126
00229b97 127 # perl internal addresses
128 #
129 "perl5-porters\100africa.nicoh.com",
130 "perlbug\100perl.org",
131 "perl5-porters.nicoh.com"
8513229b 132;
133
a7ad7795 134
5649b9c9 135if (@authors) {
136 my %raw;
137 foreach my $filename (@authors) {
138 open FH, "<$filename" or die "Can't open $filename: $!";
139 while (<FH>) {
140 next if /^\#/;
141 next if /^-- /;
142 if (/<([^>]+)>/) {
00229b97 143 # Easy line.
144 $raw{$1}++;
5649b9c9 145 } elsif (/^([-A-Za-z0-9 .\'À-ÖØöø-ÿ]+)[\t\n]/) {
00229b97 146 # Name only
147 $untraced{$1}++;
5649b9c9 148 } else {
00229b97 149 chomp;
150 warn "Can't parse line '$_'";
5649b9c9 151 }
152 }
153 }
154 foreach (keys %raw) {
155 print "E-mail $_ occurs $raw{$_} times\n" if $raw{$_} > 1;
156 $_ = lc $_;
157 $authors{$map{$_} || $_}++;
158 }
2b90724c 159 ++$authors{'!'};
160 ++$authors{'?'};
5649b9c9 161}
162
00229b97 163my @lines = split(/^commit\s*/sm,join('',<>));
164for ( @lines) {
165 next if m/^$/;
166 next if m/^(\S*?)^Merge:/ism; # skip merge commits
167 if (m/^(.*?)^Author:\s*(.*?)^Date:\s*(.*?)^(.*)$/gism) {
5649b9c9 168 # new patch
00229b97 169 ($patch, $committer, $date,$log) = ($1,$2,$3,$4);
170 chomp($committer);
171 unless ($committer) { die $_}
5649b9c9 172 &process ($committer, $patch, $log);
00229b97 173} else { die "XXX $_ did not match";}
5649b9c9 174}
175
5649b9c9 176
177if ($rank) {
ff4d71b5 178 &display_ordered(\%patchers);
179} elsif ($ta) {
180 &display_ordered(\%committers);
5649b9c9 181} elsif (%authors) {
182 my %missing;
183 foreach (sort keys %patchers) {
184 next if $authors{$_};
185 # Sort by number of patches, then name.
186 $missing{$patchers{$_}}->{$_}++;
187 }
188 foreach my $patches (sort {$b <=> $a} keys %missing) {
00229b97 189 print "\n\n=head1 $patches patch(es)\n\n";
5649b9c9 190 foreach my $author (sort keys %{$missing{$patches}}) {
00229b97 191 my $xauthor = $author;
192 $xauthor =~ s/@/\\100/g; # xxx temp hack
193 print "".($real_names{$author}||$author) ."\t\t\t<" . $xauthor.">\n" ;
5649b9c9 194 }
195 }
196}
197
198sub display_ordered {
ff4d71b5 199 my $what = shift;
5649b9c9 200 my @sorted;
15b8f96d 201 my $total;
ff4d71b5 202 while (my ($name, $count) = each %$what) {
5649b9c9 203 push @{$sorted[$count]}, $name;
15b8f96d 204 $total += $count;
5649b9c9 205 }
206
207 my $i = @sorted;
2b0ba25f 208 return unless @sorted;
209 my $sum = 0;
210 foreach my $i ($reverse ? 0 .. $#sorted : reverse 0 .. $#sorted) {
5649b9c9 211 next unless $sorted[$i];
15b8f96d 212 my $prefix;
2b0ba25f 213 $sum += $i * @{$sorted[$i]};
214 # Value to display is either this one, or the cumulative sum.
215 my $value = $cumulative ? $sum : $i;
15b8f96d 216 if ($percentage) {
00229b97 217 $prefix = sprintf "%6.2f:\t", 100 * $value / $total;
15b8f96d 218 } else {
00229b97 219 $prefix = "$value:\t";
15b8f96d 220 }
221 print wrap ($prefix, "\t", join (" ", sort @{$sorted[$i]}), "\n");
5649b9c9 222 }
223}
224
225sub process {
226 my ($committer, $patch, $log) = @_;
227 return unless $committer;
2b90724c 228 my @authors = $log =~ /From:\s+.*?([^"\@ \t\n<>]+\@[^"\@ \t\n<>]+)/gm;
5649b9c9 229
230 if (@authors) {
00229b97 231 foreach my $addr (@authors) {
232
233 $patchers{_raw_address($addr)}++;
5649b9c9 234 }
235 # print "$patch: @authors\n";
00229b97 236 $committers{_raw_address($committer)}++;
5649b9c9 237 } else {
00229b97 238 # print "$patch: $committer\n";
5649b9c9 239 # Not entirely fair as this means that the maint pumpking scores for
240 # everything intergrated that wasn't a third party patch in blead
00229b97 241 $patchers{_raw_address($committer)}++;
5649b9c9 242 }
243}
244
00229b97 245sub _raw_address {
246 my $addr = shift;
247 my $real_name;
248 if ($addr =~ /<.*>/) {
249 $addr =~ s/^\s*(.*)\s*<(.*?)>.*$/$2/ ;
250 $real_name = $1;
251 }
252 $addr = lc $addr;
253 $addr = $map{$addr} || $addr;
254
255 if ($real_name) { $real_names{$addr} = $real_name};
256 return $addr;
257}
258
5649b9c9 259
8513229b 260__DATA__
261
262#
263# List of mappings. First entry the "correct" email address, as appears
264# in the AUTHORS file. Second is any "alias" mapped to it.
265#
266# If the "correct" email address is a '+', the entry above is reused;
267# this for addresses with more than one alias.
268#
269# Note that all entries are in lowercase. Further, no '@' signs should
270# appear; use \100 instead.
271#
272#
273# Committers.
274#
275adi enache\100rdslink.ro
276alanbur alan.burlison\100sun.com
277+ alan.burlison\100uk.sun.com
00229b97 278+ aburlison\100cix.compulink.co.uk
279ams ams\100toroid.org
280+ ams\100wiw.org
8513229b 281chip chip\100pobox.com
00229b97 282+ chip\100perl.com
283+ salzench\100nielsenmedia.com
284+ chip\100atlantic.net
285+ chip\100rio.atlantic.net
286+ salzench\100dun.nielsen.com
8513229b 287craigb craig.berry\100psinetcs.com
288+ craig.berry\100metamorgs.com
289+ craig.berry\100signaltreesolutions.com
290+ craigberry\100mac.com
a94e4597 291+ craig.a.berry\100gmail.com
8513229b 292davem davem\100fdgroup.com
293+ davem\100iabyn.nospamdeletethisbit.com
a94e4597 294+ davem\100iabyn.com
8513229b 295+ davem\100fdgroup.co.uk
296+ davem\100fdisolutions.com
297+ davem\100iabyn.com
298demerphq demerphq\100gmail.com
299+ yves.orton\100de.mci.com
300+ yves.orton\100mciworldcom.de
00229b97 301+ demerphq\100dromedary.booking.com
302+ demerphq\100gemini.(none)
303+ demerphq\100camel.booking.com
304+ demerphq\100hotmail.com
8513229b 305doughera doughera\100lafayette.edu
00229b97 306+ doughera\100lafcol.lafayette.edu
307+ doughera\100fractal.phys.lafayette.edu
308+ doughera.lafayette.edu
309+ doughera\100newton.phys.lafayette.edu
310
8513229b 311gbarr gbarr\100pobox.com
00229b97 312+ bodg\100tiuk.ti.com
313+ gbarr\100ti.com
314+ graham.barr\100tiuk.ti.com
8513229b 315gisle gisle\100activestate.com
316+ gisle\100aas.no
00229b97 317+ aas\100aas.no
318+ aas\100bergen.sn.no
8513229b 319gsar gsar\100activestate.com
320+ gsar\100cpan.org
00229b97 321+ gsar\100engin.umich.edu
8513229b 322hv hv\100crypt.compulink.co.uk
323+ hv\100crypt.org
00229b97 324+ hv\100iii.co.uk
8513229b 325jhi jhi\100iki.fi
326+ jhietaniemi\100gmail.com
327+ jhi\100kosh.hut.fi
00229b97 328+ jhi\100alpha.hut.fi
8513229b 329+ jhi\100cc.hut.fi
330+ jarkko.hietaniemi\100nokia.com
00229b97 331+ jarkko.hietaniemi\100cc.hut.fi
332jesse jesse\100bestpractical.com
333+ jesse\100fsck.com
334+ jesse\100perl.org
8513229b 335merijn h.m.brand\100xs4all.nl
336+ h.m.brand\100hccnet.nl
337+ merijn\100l1.procura.nl
338mhx mhx-perl\100gmx.net
339nicholas nick\100unfortu.net
340+ nick\100ccl4.org
341+ nick\100talking.bollo.cx
342+ nick\100plum.flirble.org
343+ nick\100babyhippo.co.uk
344+ nick\100bagpuss.unfortu.net
8513229b 345pudge pudge\100pobox.com
346rgs rgarciasuarez\100free.fr
347+ rgarciasuarez\100mandrakesoft.com
348+ rgarciasuarez\100mandriva.com
349+ rgarciasuarez\100gmail.com
350+ raphel.garcia-suarez\100hexaflux.com
351sky sky\100nanisky.com
352+ artur\100contiller.se
353+ arthur\100contiller.se
b692cd7a 354steveh stevehay\100planit.com
355+ steve.hay\100uk.radan.com
8513229b 356stevep steve\100fisharerojo.org
357+ steve.peters\100gmail.com
00229b97 358timb Tim.Bunce\100pobox.com
359+ tim.bunce\100ig.co.uk
360
8513229b 361
362#
363# Mere mortals.
364#
00229b97 365\043####\100juerd.nl juerd\100cpan.org
366+ juerd\100convolution.nl
8513229b 3677k8lrvf02\100sneakemail.com kjx9zthh3001\100sneakemail.com
368+ dtr8sin02\100sneakemail.com
369+ rt8363b02\100sneakemail.com
370+ o6hhmk002\100sneakemail.com
a94e4597 371+ smueller\100cpan.org
372+ l2ot9pa02\100sneakemail.com
373+ wyp3rlx02\100sneakemail.com
00229b97 374+ 0mgwtfbbq\100sneakemail.com
8513229b 375
00229b97 376a.r.ferreira\100gmail.com aferreira\100shopzilla.com
8513229b 377abe\100ztreet.demon.nl abeltje\100cpan.org
00229b97 378abela\100hsc.fr abela\100geneanet.org
8513229b 379abigail\100abigail.be abigail\100foad.org
380+ abigail\100abigail.nl
00229b97 381+ abigail\100fnx.com
382ach\100mpe.mpg.de ach\100rosat.mpe-garching.mpg.de
8513229b 383ajohnson\100nvidia.com ajohnson\100wischip.com
384alexm\100netli.com alexm\100w-m.ru
a94e4597 385alex-p5p\100earth.li alex\100rcon.rog
00229b97 386alexmv\100mit.edu alex\100chmrr.net
8513229b 387alian\100cpan.org alian\100alianwebserver.com
00229b97 388allen\100grumman.com allen\100gateway.grumman.com
389allen\100huarp.harvard.edu nort\100bottesini.harvard.edu
8513229b 390allens\100cpan.org easmith\100beatrice.rutgers.edu
00229b97 391andreas.koenig\100anima.de andreas.koenig.gmwojprw\100franz.ak.mind.de
392+ andreas.koenig.7os6vvqr\100franz.ak.mind.de
8513229b 393+ a.koenig\100mind.de
00229b97 394+ k\100anna.in-berlin.de
395+ andk\100cpan.org
396+ koenig\100anna.mind.de
397+ k\100anna.mind.de
8513229b 398anno4000\100lublin.zrz.tu-berlin.de anno4000\100mailbox.tu-berlin.de
399+ siegel\100zrz.tu-berlin.de
400ash\100cpan.org ash_cpan\100firemirror.com
401avarab\100gmail.com avar\100cpan.org
402
00229b97 403bailey\100newman.upenn.edu bailey\100hmivax.humgen.upenn.edu
404+ bailey\100genetics.upenn.edu
8513229b 405bah\100ecnvantage.com bholzman\100longitude.com
00229b97 406bcarter\100gumdrop.flyinganvil.org q.eibcartereio.=~m-b.{6}-cgimosx\100gumdrop.flyinganvil.org
8513229b 407ben_tilly\100operamail.com btilly\100gmail.com
408
409chromatic\100wgz.org chromatic\100rmci.net
410clkao\100clkao.org clkao\100bestpractical.com
00229b97 411corion\100corion.net corion\100cpan.org
8513229b 412cp\100onsitetech.com publiustemp-p5p\100yahoo.com
413+ publiustemp-p5p3\100yahoo.com
414cpan\100audreyt.org autrijus\100egb.elixus.org
415+ autrijus\100geb.elixus.org
416+ autrijus\100gmail.com
417+ autrijus\100ossf.iis.sinica.edu.tw
418+ autrijus\100autrijus.org
419+ audreyt\100audreyt.org
420
421damian\100cs.monash.edu.au damian\100conway.org
00229b97 422dan\100sidhe.org sugalsd\100lbcc.cc.or.us
423+ sugalskd\100osshe.edu
8513229b 424david.dyck\100fluke.com dcd\100tc.fluke.com
8513229b 425domo\100computer.org shouldbedomo\100mac.com
00229b97 426+ domo\100slipper.ip.lu
427dougm\100covalent.net dougm\100opengroup.org
428+ dougm\100osf.org
8513229b 429
00229b97 430egf7\100columbia.edu efifer\100sanwaint.com
8513229b 431epeschko\100den-mdev1 esp5\100pge.com
432
433fugazi\100zyx.net larrysh\100cpan.org
434
f0cb2104 435jns\100integration-house.com jns\100gellyfish.com
436+ gellyfish\100gellyfish.com
00229b97 437
438gnat\100frii.com gnat\100prometheus.frii.com
8513229b 439gp\100familiehaase.de gerrit\100familiehaase.de
440grazz\100pobox.com grazz\100nyc.rr.com
441
00229b97 442hansmu\100xs4all.nl hansm\100icgroup.nl
443+ hansm\100icgned.nl
444+ hans\100icgned.nl
445+ hansm\100euronet.nl
8513229b 446hio\100ymir.co.jp hio\100hio.jp
447
448japhy\100pobox.com japhy\100pobox.org
449+ japhy\100perlmonk.org
450+ japhy\100cpan.org
451jari.aalto\100poboxes.com jari.aalto\100cante.net
452jcromie\100divsol.com jcromie\100cpan.org
453+ jim.cromie\100gmail.com
454jdhedden\100cpan.org jerry\100hedden.us
455+ jdhedden\1001979.usna.com
456+ jdhedden\100gmail.com
457+ jdhedden\100yahoo.com
458jfriedl\100yahoo.com jfriedl\100yahoo-inc.com
459jjore\100cpan.org twists\100gmail.com
8513229b 460
461kane\100dwim.org kane\100xs4all.net
462+ kane\100cpan.org
463+ kane\100xs4all.nl
464+ jos\100dwim.org
465+ jib\100ripe.net
00229b97 466ken\100mathforum.org kenahoo\100gmail.com
8513229b 467kroepke\100dolphin-services.de kay\100dolphin-services.de
468kstar\100wolfetech.com kstar\100cpan.org
00229b97 469+ kurt_starsinic\100ml.com
470larry\100wall.org lwall\100jpl-devvax.jpl.nasa.gov
471+ lwall\100netlabs.com
472+ larry\100netlabs.com
473+ lwall\100sems.com
474+ lwall\100scalpel.netlabs.com
475lewart\100uiuc.edu lewart\100vadds.cvm.uiuc.edu
476+ d-lewart\100uiuc.edu
477
478marcel\100codewerk.com gr\100univie.ac.at
8513229b 479mats\100sm6sxl.net mats\100sm5sxl.net
480mbarbon\100dsi.unive.it mattia.barbon\100libero.it
481mcmahon\100ibiblio.org mcmahon\100metalab.unc.edu
482merijnb\100iloquent.nl merijnb\100iloquent.com
483mgjv\100comdyn.com.au mgjv\100tradingpost.com.au
484michael.schroeder\100informatik.uni-erlangen.de mls\100suse.de
485mike\100stok.co.uk mike\100exegenix.com
486mjtg\100cam.ac.uk mjtg\100cus.cam.ac.uk
487
488nospam-abuse\100bloodgate.com tels\100bloodgate.com
489+ perl_dummy\100bloodgate.com
00229b97 490
491ignasi.roca\100fujitsu-siemens.com ignasi.roca\100fujitsu.siemens.es
a94e4597 492ilya\100math.berkeley.edu ilya\100math.ohio-state.edu
493+ nospam-abuse\100ilyaz.org
8513229b 494
00229b97 495okamoto\100corp.hp.com okamoto\100hpcc123.corp.hp.com
496
497
8513229b 498p5-authors\100crystalflame.net perl\100crystalflame.net
499+ rs\100crystalflame.net
00229b97 500+ coral\100eekeek.org
501+ coral\100moonlight.crystalflame.net
502+ rs\100oregonnet.com
8513229b 503paul.green\100stratus.com paul_greenvos\100vos.stratus.com
504paul.marquess\100btinternet.com paul_marquess\100yahoo.co.uk
505+ paul.marquess\100ntlworld.com
506+ paul.marquess\100openwave.com
00229b97 507+ pmarquess\100bfsec.bt.co.uk
508+ pmqs\100cpan.org
8513229b 509pcg\100goof.com schmorp\100schmorp.de
00229b97 510perl\100cadop.com cdp\100hpescdp.fc.hp.com
511perl\100profvince.com vince\100profvince.com
512perl-rt\100wizbit.be p5p\100perl.wizbit.be
8513229b 513# Maybe we should special case this to get real names out?
514perlbug\100perl.org perlbug-followup\100perl.org
515+ bugs-perl5\100bugs6.perl.org
00229b97 516pfeifer\100wait.de pfeifer\100charly.informatik.uni-dortmund.de
8513229b 517phil\100perkpartners.com phil\100finchcomputer.com
518pimlott\100idiomtech.com andrew\100pimlott.net
519pne\100cpan.org philip.newton\100gmx.net
520+ philip.newton\100datenrevision.de
521+ pnewton\100gmx.de
00229b97 522pprymmer\100factset.com pvhp\100forte.com
523public\100khwilliamson.com khw\100karl.(none)
8513229b 524
525radu\100netsoft.ro rgreab\100fx.ro
00229b97 526raphael.manfredi\100pobox.com raphael_manfredi\100grenoble.hp.com
8513229b 527richard.foley\100ubsw.com richard.foley\100t-online.de
528+ richard.foley\100ubs.com
529+ richard.foley\100rfi.net
530rick\100consumercontact.com rick\100bort.ca
531+ rick.delaney\100rogers.com
a94e4597 532+ rick\100bort.ca
4bc69901 533rjbs\100cpan.org rjbs-perl-p5p\100lists.manxome.org
00229b97 534+ perl.p5p\100rjbs.manxome.org
8513229b 535rjk\100linguist.dartmouth.edu rjk\100linguist.thayer.dartmouth.edu
536+ rjk-perl-p5p\100tamias.net
00229b97 537rjray\100redhat.com rjray\100uswest.com
8513229b 538rmgiroux\100acm.org rmgiroux\100hotmail.com
a94e4597 539rmbarker\100cpan.org rmb1\100cise.npl.co.uk
540+ robin.barker\100npl.co.uk
00229b97 541+ rmb\100cise.npl.co.uk
542robertmay\100cpan.org rob\100themayfamily.me.uk
543robin\100cpan.org robin\100kitsite.com
544roderick\100argon.org roderick\100gate.net
8513229b 545rootbeer\100teleport.com rootbeer\100redcat.com
546
547schubiger\100cpan.org steven\100accognoscere.org
548+ sts\100accognoscere.org
00229b97 549+ schubiger\100gmail.com
8513229b 550schwern\100pobox.com schwern\100gmail.com
8ed05479 551+ schwern\100athens.arena-i.com
552+ schwern\100blackrider.aocn.com
553+ schwern\100ool-18b93024.dyn.optonline.net
8513229b 554sebastien\100aperghis.net maddingue\100free.fr
555+ saper\100cpan.org
e853cbad 556shlomif\100vipe.technion.ac.il shlomif\100iglu.org.il
8513229b 557simon\100simon-cozens.org simon\100pembro4.pmb.ox.ac.uk
558+ simon\100brecon.co.uk
559+ simon\100othersideofthe.earth.li
560+ simon\100cozens.net
561+ simon\100netthink.co.uk
562slaven\100rezic.de slaven.rezic\100berlin.de
a94e4597 563+ srezic\100iconmobile.com
00229b97 564+ srezic\100cpan.org
8513229b 565smcc\100mit.edu smcc\100ocf.berkeley.edu
566+ smcc\100csua.berkeley.edu
00229b97 567+ alias\100mcs.com
568+ smccam@uclink4.berkeley.edu
8513229b 569spider\100orb.nashua.nh.us spider\100web.zk3.dec.com
570+ spider\100leggy.zk3.dec.com
571+ spider-perl\100orb.nashua.nh.us
572+ spider\100peano.zk3.dec.com
00229b97 573spp\100ds.net spp\100psa.pencom.com
8513229b 574stef\100mongueurs.net stef\100payrard.net
575+ s.payrard\100wanadoo.fr
576
577tassilo.parseval\100post.rwth-aachen.de tassilo.von.parseval\100rwth-aachen.de
00229b97 578tchrist\100perl.com tchrist\100mox.perl.com
579+ tchrist\100jhereg.perl.com
580thomas.dorner\100start.de tdorner\100amadeus.net
581tjenness\100cpan.org t.jenness\100jach.hawaii.edu
582+ timj\100jach.hawaii.edu
583tom.horsley\100mail.ccur.com tom.horsley\100ccur.com
584+ tom\100amber.ssd.hcsc.com
585
586vkonovalov\100lucent.com vkonovalov\100peterstar.ru
587+ konovalo\100mail.wplus.net
588+ vadim\100vkonovalov.ru
589+ vkonovalov\100spb.lucent.com
590+ vkonovalov\100alcatel-lucent.com
591
592whatever\100davidnicol.com davidnicol\100gmail.com
593wolfgang.laun\100alcatel.at wolfgang.laun\100chello.at
594+ wolfgang.laun\100thalesgroup.com
595+ wolfgang.laun\100gmail.com