Further work to cut down the unattributed authors in the AUTHORS file.
[perl.git] / Porting / checkAUTHORS.pl
1 #!/usr/bin/perl -w
2 use strict;
3 use Text::Wrap;
4 $Text::Wrap::columns = 80;
5 my ($committer, $patch, $log,$date);
6 use Getopt::Long;
7
8 my ($rank, $percentage, $cumulative, $reverse, $ta, @authors, %authors,
9     %untraced, %patchers, %committers, %real_names);
10 my $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             );
17
18 if (!$result or (($rank||0) + ($ta||0) + (@authors ? 1 : 0) != 1) or !@ARGV) {
19   die <<"EOS";
20 $0 --rank Changelogs                        # rank authors by patches
21 $0 --acknowledged <authors file> Changelogs # Display unacknowledged authors
22 $0 --thanks-applied Changelogs            # ranks committers
23 $0 --percentage ...                         # show rankings as percentages
24 $0 --cumulative ...                         # show rankings cumulatively
25 $0 --reverse ...                            # show rankings in reverse
26 Specify stdin as - if needs be. Remember that option names can be abbreviated.
27 EOS
28 }
29
30
31 my $prev = "";
32 my %map;
33
34 while (<DATA>) {
35     chomp;
36     s/\\100/\@/g;
37     $_ = lc;
38     if (my ($correct, $alias) = /^\s*([^#\s]\S*)\s+(.*\S)/) {
39         $correct =~ s/^\\043/#/;
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 
49     "agrow\100thegotonerd.com",
50     "alexander_bluhm\100genua.de",
51     "alexander_gernler\100genua.de",
52     "ammon\100rhythm.com",
53     "andrew\100sundale.net",
54     "bah\100longitude.com",
55     "bbucklan\100jpl-devvax.jpl.nasa.gov",
56     "ben\100linuxgazette.net",
57     "bilbo\100ua.fm",
58     "blino\100mandriva.com",
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",
70     "ilmari\100vesla.ilmari.org",
71     "ilya\100juil.nonet",
72     "info\100lingo.kiev.ua",
73     "jms\100mathras.comcast.net",
74     "johnh\100isi.edu",
75     "kan\100dcit.cz",
76     "kaminsky\100math.huji.ac.il",
77     "knew-p5p\100pimb.org",
78     "kvr\100centrum.cz",
79     "lemkemch\100t-online.de",
80     "mauzo\100csv.warwick.ac.uk",
81     "mlelstv\100serpens.de",
82     "p.boven\100sara.nl",
83     "padre\100elte.hu",
84     "pancho\100pancho.name",
85     "perlbug\100veggiechinese.net",
86     "pm\100capmon.dk",
87     "premchai21\100yahoo.com",
88     "pxm\100nubz.org",
89     "raf\100tradingpost.com.au",
90     "scott\100perlcode.org",
91     "smoketst\100hp46t243.cup.hp.com",
92     "yath-perlbug\100yath.de",
93 ;
94
95 #
96 # Email addresses for people that don't have an email address in AUTHORS
97 # Presumably deliberately?
98
99
100 $map {$_} = '!' for
101      # Nick Ing-Simmons has passed away (2006-09-25).
102      "nick\100ing-simmons.net",
103      "nik\100tiuk.ti.com",
104      "nick.ing-simmons\100elixent.com",
105      "nick\100ni-s.u-net.com",
106          "nick.ing-simmons\100tiuk.ti.com",
107
108      # Iain Truskett has passed away (2003-12-29).
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      # perl internal addresses
125      #
126      "perl5-porters\100africa.nicoh.com",
127      "perlbug\100perl.org",
128      "perl5-porters.nicoh.com"
129 ;
130
131
132 if (@authors) {
133   my %raw;
134   foreach my $filename (@authors) {
135     open FH, "<$filename" or die "Can't open $filename: $!";
136     while (<FH>) {
137       next if /^\#/;
138       next if /^-- /;
139       if (/<([^>]+)>/) {
140     # Easy line.
141     $raw{$1}++;
142       } elsif (/^([-A-Za-z0-9 .\'�-����-�]+)[\t\n]/) {
143     # Name only
144     $untraced{$1}++;
145       } else {
146     chomp;
147     warn "Can't parse line '$_'";
148       }
149     }
150   }
151   foreach (keys %raw) {
152     print "E-mail $_ occurs $raw{$_} times\n" if $raw{$_} > 1;
153     $_ = lc $_;
154     $authors{$map{$_} || $_}++;
155   }
156   ++$authors{'!'};
157   ++$authors{'?'};
158 }
159
160 my @lines = split(/^commit\s*/sm,join('',<>));
161 for ( @lines) {
162     next if m/^$/;
163   next if m/^(\S*?)^Merge:/ism; # skip merge commits
164   if (m/^(.*?)^Author:\s*(.*?)^Date:\s*(.*?)^(.*)$/gism) {
165     # new patch
166     ($patch, $committer, $date,$log) = ($1,$2,$3,$4);
167     chomp($committer);
168     unless ($committer) { die $_}
169     &process ($committer, $patch, $log);
170 } else { die "XXX $_ did not match";}
171 }
172
173
174 if ($rank) {
175   &display_ordered(\%patchers);
176 } elsif ($ta) {
177   &display_ordered(\%committers);
178 } elsif (%authors) {
179   my %missing;
180   foreach (sort keys %patchers) {
181     next if $authors{$_};
182     # Sort by number of patches, then name.
183     $missing{$patchers{$_}}->{$_}++;
184   }
185   foreach my $patches (sort {$b <=> $a} keys %missing) {
186     print "\n\n=head1 $patches patch(es)\n\n";
187     foreach my $author (sort keys %{$missing{$patches}}) {
188         my $xauthor = $author;
189         $xauthor =~ s/@/\\100/g; # xxx temp hack
190           print "".($real_names{$author}||$author) ."\t\t\t<" . $xauthor.">\n" ;
191     }
192   }
193 }
194
195 sub display_ordered {
196   my $what = shift;
197   my @sorted;
198   my $total;
199   while (my ($name, $count) = each %$what) {
200     push @{$sorted[$count]}, $name;
201     $total += $count;
202   }
203
204   my $i = @sorted;
205   return unless @sorted;
206   my $sum = 0;
207   foreach my $i ($reverse ? 0 .. $#sorted : reverse 0 .. $#sorted) {
208     next unless $sorted[$i];
209     my $prefix;
210     $sum += $i * @{$sorted[$i]};
211     # Value to display is either this one, or the cumulative sum.
212     my $value = $cumulative ? $sum : $i;
213     if ($percentage) {
214     $prefix = sprintf "%6.2f:\t", 100 * $value / $total;
215     } else {
216     $prefix = "$value:\t";
217     }
218     print wrap ($prefix, "\t", join (" ", sort @{$sorted[$i]}), "\n");
219   }
220 }
221
222 sub process {
223   my ($committer, $patch, $log) = @_;
224   return unless $committer;
225   my @authors = $log =~ /From:\s+.*?([^"\@ \t\n<>]+\@[^"\@ \t\n<>]+)/gm;
226
227   if (@authors) {
228     foreach my $addr (@authors) {
229
230       $patchers{_raw_address($addr)}++;
231     }
232     # print "$patch: @authors\n";
233     $committers{_raw_address($committer)}++;
234   } else {
235       # print "$patch: $committer\n";
236     # Not entirely fair as this means that the maint pumpking scores for
237     # everything intergrated that wasn't a third party patch in blead
238     $patchers{_raw_address($committer)}++;
239   }
240 }
241
242 sub _raw_address {
243     my $addr = shift;
244     my $real_name;
245     if ($addr =~ /<.*>/) {
246     $addr =~ s/^\s*(.*)\s*<(.*?)>.*$/$2/ ;
247      $real_name = $1;
248     }
249     $addr = lc $addr;
250     $addr = $map{$addr} || $addr;
251     
252     if ($real_name) { $real_names{$addr} = $real_name};
253     return $addr;
254 }
255
256
257 __DATA__
258
259 #
260 # List of mappings. First entry the "correct" email address, as appears
261 # in the AUTHORS file. Second is any "alias" mapped to it.
262 #
263 # If the "correct" email address is a '+', the entry above is reused; 
264 # this for addresses with more than one alias.
265 #
266 # Note that all entries are in lowercase. Further, no '@' signs should
267 # appear; use \100 instead.
268 #
269 #
270 #  Committers.
271 #
272 adi                                     enache\100rdslink.ro
273 alanbur                                 alan.burlison\100sun.com
274 +                                       alan.burlison\100uk.sun.com
275 +                                       aburlison\100cix.compulink.co.uk
276 ams                                     ams\100toroid.org
277 +                                       ams\100wiw.org
278 chip                                    chip\100pobox.com
279 +                                       chip\100perl.com
280 +                                       salzench\100nielsenmedia.com
281 +                                       chip\100atlantic.net
282 +                                       chip\100rio.atlantic.net
283 +                                       salzench\100dun.nielsen.com
284 craigb                                  craig.berry\100psinetcs.com
285 +                                       craig.berry\100metamorgs.com
286 +                                       craig.berry\100signaltreesolutions.com
287 +                                       craigberry\100mac.com
288 +                                       craig.a.berry\100gmail.com
289 davem                                   davem\100fdgroup.com
290 +                                       davem\100iabyn.nospamdeletethisbit.com
291 +                                       davem\100iabyn.com
292 +                                       davem\100fdgroup.co.uk
293 +                                       davem\100fdisolutions.com
294 +                                       davem\100iabyn.com
295 demerphq                                demerphq\100gmail.com
296 +                                       yves.orton\100de.mci.com
297 +                                       yves.orton\100mciworldcom.de
298 +                                       demerphq\100dromedary.booking.com
299 +                                       demerphq\100gemini.(none)
300 +                                       demerphq\100camel.booking.com
301 +                                       demerphq\100hotmail.com
302 doughera                                doughera\100lafayette.edu
303 +                                       doughera\100lafcol.lafayette.edu
304 +                                       doughera\100fractal.phys.lafayette.edu
305 +                                       doughera.lafayette.edu
306 +                                       doughera\100newton.phys.lafayette.edu
307
308 gbarr                                   gbarr\100pobox.com
309 +                                       bodg\100tiuk.ti.com
310 +                                       gbarr\100ti.com
311 +                                       graham.barr\100tiuk.ti.com
312 gisle                                   gisle\100activestate.com
313 +                                       gisle\100aas.no
314 +                                       aas\100aas.no
315 +                                       aas\100bergen.sn.no
316 gsar                                    gsar\100activestate.com
317 +                                       gsar\100cpan.org
318 +                                       gsar\100engin.umich.edu
319 hv                                      hv\100crypt.compulink.co.uk
320 +                                       hv\100crypt.org
321 +                                       hv\100iii.co.uk
322 jhi                                     jhi\100iki.fi
323 +                                       jhietaniemi\100gmail.com
324 +                                       jhi\100kosh.hut.fi
325 +                                       jhi\100alpha.hut.fi
326 +                                       jhi\100cc.hut.fi
327 +                                       jhi\100hut.fi
328 +                                       jarkko.hietaniemi\100nokia.com
329 +                                       jarkko.hietaniemi\100cc.hut.fi
330 jesse                                   jesse\100bestpractical.com
331 +                                       jesse\100fsck.com
332 +                                       jesse\100perl.org
333 merijn                                  h.m.brand\100xs4all.nl
334 +                                       h.m.brand\100hccnet.nl
335 +                                       merijn\100l1.procura.nl
336 +                                                                               merijn\100a5.(none)
337 +                                                                               merijnb\100ms.com
338 +                                                                               merijnb\100iloquent.nl
339 +                                                                               merijnb\100iloquent.com
340 mhx                                     mhx-perl\100gmx.net
341 +                                                                               mhx\100r2d2.(none)
342 nicholas                                nick\100unfortu.net
343 +                                       nick\100ccl4.org
344 +                                       nick\100talking.bollo.cx
345 +                                       nick\100plum.flirble.org
346 +                                       nick\100babyhippo.co.uk
347 +                                       nick\100bagpuss.unfortu.net
348 +                                                                               Nicholas Clark (sans From field in mail header)
349 pudge                                   pudge\100pobox.com
350 rgs                                     rgarciasuarez\100free.fr
351 +                                       rgarciasuarez\100mandrakesoft.com
352 +                                       rgarciasuarez\100mandriva.com
353 +                                       rgarciasuarez\100gmail.com
354 +                                       raphel.garcia-suarez\100hexaflux.com
355 sky                                     sky\100nanisky.com
356 +                                       artur\100contiller.se
357 +                                       arthur\100contiller.se
358 steveh                                  stevehay\100planit.com
359 +                                       steve.hay\100uk.radan.com
360 stevep                                  steve\100fisharerojo.org
361 +                                       steve.peters\100gmail.com
362 timb                                    Tim.Bunce\100pobox.com
363 +                                       tim.bunce\100ig.co.uk
364
365
366 #
367 # Mere mortals.
368 #
369 \043####\100juerd.nl                    juerd\100cpan.org
370 +                                       juerd\100convolution.nl
371 7k8lrvf02\100sneakemail.com             kjx9zthh3001\100sneakemail.com
372 +                                       dtr8sin02\100sneakemail.com
373 +                                       rt8363b02\100sneakemail.com
374 +                                       o6hhmk002\100sneakemail.com
375 +                                       smueller\100cpan.org
376 +                                       l2ot9pa02\100sneakemail.com
377 +                                       wyp3rlx02\100sneakemail.com
378 +                                       0mgwtfbbq\100sneakemail.com
379
380 a.r.ferreira\100gmail.com               aferreira\100shopzilla.com
381 abe\100ztreet.demon.nl                  abeltje\100cpan.org
382 abela\100hsc.fr                         abela\100geneanet.org
383 abigail\100abigail.be                   abigail\100foad.org
384 +                                       abigail\100abigail.nl
385 +                                       abigail\100fnx.com
386 ach\100mpe.mpg.de                       ach\100rosat.mpe-garching.mpg.de
387 ajohnson\100nvidia.com                  ajohnson\100wischip.com
388 alexm\100netli.com                      alexm\100w-m.ru
389 alex-p5p\100earth.li                    alex\100rcon.rog
390 alexmv\100mit.edu                       alex\100chmrr.net
391 alian\100cpan.org                       alian\100alianwebserver.com
392 allen\100grumman.com                    allen\100gateway.grumman.com
393 allen\100huarp.harvard.edu              nort\100bottesini.harvard.edu
394 +                                                                               nort\100qnx.com
395 allens\100cpan.org                      easmith\100beatrice.rutgers.edu
396 andreas.koenig\100anima.de              andreas.koenig.gmwojprw\100franz.ak.mind.de
397 +                                       andreas.koenig.7os6vvqr\100franz.ak.mind.de
398 +                                       a.koenig\100mind.de
399 +                                       k\100anna.in-berlin.de
400 +                                       andk\100cpan.org
401 +                                       koenig\100anna.mind.de
402 +                                       k\100anna.mind.de
403 +                                                                               root\100ak-71.mind.de
404 +                                                                               root\100ak-75.mind.de
405 +                                                                               k\100sissy.in-berlin.de
406 +                                                                               a.koenig\100kulturbox.de
407 +                                                                               k\100sissy.in-berlin.de
408 anno4000\100lublin.zrz.tu-berlin.de     anno4000\100mailbox.tu-berlin.de
409 +                                       siegel\100zrz.tu-berlin.de
410 ash\100cpan.org                         ash_cpan\100firemirror.com
411 avarab\100gmail.com                     avar\100cpan.org
412
413 bailey\100newman.upenn.edu              bailey\100hmivax.humgen.upenn.edu
414 +                                       bailey\100genetics.upenn.edu
415 +                                                                               bailey.charles\100gmail.com
416 bah\100ecnvantage.com                   bholzman\100longitude.com
417 bcarter\100gumdrop.flyinganvil.org      q.eibcartereio.=~m-b.{6}-cgimosx\100gumdrop.flyinganvil.org
418 ben_tilly\100operamail.com              btilly\100gmail.com
419 BQW10602\100nifty.com                                   sadahiro\100cpan.org
420
421 chromatic\100wgz.org                    chromatic\100rmci.net
422 clintp\100geeksalad.org                                 cpierce1\100ford.com
423 clkao\100clkao.org                      clkao\100bestpractical.com
424 corion\100corion.net                    corion\100cpan.org
425 cp\100onsitetech.com                    publiustemp-p5p\100yahoo.com
426 +                                       publiustemp-p5p3\100yahoo.com
427 cpan\100audreyt.org                     autrijus\100egb.elixus.org
428 +                                       autrijus\100geb.elixus.org
429 +                                       autrijus\100gmail.com
430 +                                       autrijus\100ossf.iis.sinica.edu.tw
431 +                                       autrijus\100autrijus.org
432 +                                       audreyt\100audreyt.org
433 crt\100kiski.net                                                perl\100ctweten.amsite.com
434
435 damian\100conway.org                                    damian\100cs.monash.edu.au
436 dagolden\100cpan.org                    xdaveg\100gmail.com
437 dan\100sidhe.org                        sugalsd\100lbcc.cc.or.us
438 +                                       sugalskd\100osshe.edu
439 david.dyck\100fluke.com                 dcd\100tc.fluke.com
440 david\100wheeler.com                                    david\100kineticode.com
441 domo\100computer.org                    shouldbedomo\100mac.com
442 +                                       domo\100slipper.ip.lu
443 +                                                                               domo\100tcp.ip.lu
444 dougm\100covalent.net                   dougm\100opengroup.org
445 +                                       dougm\100osf.org
446
447 egf7\100columbia.edu                    efifer\100sanwaint.com
448 epeschko\100den-mdev1                   esp5\100pge.com
449
450 fugazi\100zyx.net                       larrysh\100cpan.org
451 +                                                                               lshatzer\100islanddata.com
452
453 gbacon\100itsc.uah.edu                                          gbacon\100adtrn-srv4.adtran.com
454 gfuji\100cpan.org                                               g.psy.va\100gmail.com
455 gibreel\100pobox.com                    stephen.zander\100interlock.mckesson.com
456 +                                       srz\100loopback
457 gnat\100frii.com                        gnat\100prometheus.frii.com
458 gp\100familiehaase.de                   gerrit\100familiehaase.de
459 grazz\100pobox.com                      grazz\100nyc.rr.com
460 gward\100ase.com                                                greg\100bic.mni.mcgill.ca
461 hansmu\100xs4all.nl                     hansm\100icgroup.nl
462 +                                       hansm\100icgned.nl
463 +                                       hans\100icgned.nl
464 +                                       hansm\100euronet.nl
465 hio\100ymir.co.jp                       hio\100hio.jp
466 hops\100sco.com                                                 hops\100scoot.pdev.sco.com
467
468 james\100mastros.biz                                            theorb\100desert-island.me.uk
469 jand\100activestate.com                                 jan.dubois\100ibm.net
470 japhy\100pobox.com                      japhy\100pobox.org
471 +                                       japhy\100perlmonk.org
472 +                                       japhy\100cpan.org
473 jari.aalto\100poboxes.com               jari.aalto\100cante.net
474 jcromie\100divsol.com                   jcromie\100cpan.org
475 +                                       jim.cromie\100gmail.com
476 jdanni\100jdanni.org                                    jidanni\100hoffa.dreamhost.com
477 jdhedden\100cpan.org                    jerry\100hedden.us
478 +                                       jdhedden\1001979.usna.com
479 +                                       jdhedden\100gmail.com
480 +                                       jdhedden\100yahoo.com
481 +                                                                               jhedden\100pn100-02-2-356p.corp.bloomberg.com
482 jeremy\100zawodny.com                                   jzawodn\100wcnet.org
483 jesse\100sig.bsh.com                                    jesse\100ginger
484 jfriedl\100yahoo.com                    jfriedl\100yahoo-inc.com
485 jhannah\100omnihotels.com                                       jay\100jays.net
486 jjore\100cpan.org                       twists\100gmail.com
487 jns\100integration-house.com            jns\100gellyfish.com
488 +                                       gellyfish\100gellyfish.com
489 john\100atlantech.com                                   john\100titanic.atlantech.com
490 john\100johnwright.org                                  john.wright\100hp.com
491 joseph\100cscaper.com                                   joseph\1005sigma.com
492 joshua\100rodd.us                                                       jrodd\100pbs.org
493 jtobey\100john-edwin-tobey.org                          jtobey\100user1.channel1.com
494 jpeacock\100rowman.com                  john.peacock\100havurah-software.org
495 +                                       jpeacock\100havurah-software.org
496 jsm28\100hermes.cam.ac.uk                                       jsm28\100cam.ac.uk
497
498 kane\100dwim.org                        kane\100xs4all.net
499 +                                       kane\100cpan.org
500 +                                       kane\100xs4all.nl
501 +                                       jos\100dwim.org
502 +                                       jib\100ripe.net
503 ken\100mathforum.org                    kenahoo\100gmail.com
504 kroepke\100dolphin-services.de          kay\100dolphin-services.de
505 kstar\100wolfetech.com                  kstar\100cpan.org
506 +                                       kurt_starsinic\100ml.com
507 +                                                                               kstar\100www.chapin.edu
508 larry\100wall.org                       lwall\100jpl-devvax.jpl.nasa.gov
509 +                                       lwall\100netlabs.com
510 +                                       larry\100netlabs.com
511 +                                       lwall\100sems.com
512 +                                       lwall\100scalpel.netlabs.com
513 laszlo.molnar\100eth.ericsson.se                        molnarl\100cdata.tvnet.hu
514 lewart\100uiuc.edu                      lewart\100vadds.cvm.uiuc.edu    
515 +                                       d-lewart\100uiuc.edu
516 lstein\100cshl.org                                              lstein\100formaggio.cshl.org
517 +                                                                               lstein\100genome.wi.mit.edu
518 lupe\100lupe-christoph.de                                       lupe\100alanya.m.isar.de
519 lutherh\100stratcom.com                                 lutherh\100infinet.com
520 mab\100wdl.loral.com                                            markb\100rdcf.sm.unisys.com
521 marcel\100codewerk.com                  gr\100univie.ac.at
522 mark.p.lutz\100boeing.com                                       tecmpl1\100triton.ca.boeing.com
523 mats\100sm6sxl.net                      mats\100sm5sxl.net
524 mbarbon\100dsi.unive.it                 mattia.barbon\100libero.it
525 mcmahon\100ibiblio.org                  mcmahon\100metalab.unc.edu
526 merlyn\100stonehenge.com                                merlyn\100gadget.cscaper.com
527 mgjv\100comdyn.com.au                   mgjv\100tradingpost.com.au
528 mlh\100swl.msd.ray.com                                          webtools\100uewrhp03.msd.ray.com
529 michael.schroeder\100informatik.uni-erlangen.de mls\100suse.de
530 mike\100stok.co.uk                      mike\100exegenix.com
531 mjtg\100cam.ac.uk                       mjtg\100cus.cam.ac.uk
532 moritz\100casella.verplant.org          moritz\100faui2k3.org
533 +                                                                               moritz lenz
534
535
536 neeracher\100mac.com                                    neeri\100iis.ee.ethz.ch
537 neil\100bowers.com                                              neilb\100cre.canon.co.uk
538 nospam-abuse\100bloodgate.com           tels\100bloodgate.com
539 +                                       perl_dummy\100bloodgate.com
540
541 ignasi.roca\100fujitsu-siemens.com      ignasi.roca\100fujitsu.siemens.es
542 ilya\100math.berkeley.edu               ilya\100math.ohio-state.edu
543 +                                       nospam-abuse\100ilyaz.org
544
545 okamoto\100corp.hp.com                  okamoto\100hpcc123.corp.hp.com
546 orwant\100oreilly.com                                   orwant\100media.mit.edu
547
548 p5-authors\100crystalflame.net          perl\100crystalflame.net
549 +                                       rs\100crystalflame.net
550 +                                       coral\100eekeek.org
551 +                                       coral\100moonlight.crystalflame.net
552 +                                       rs\100oregonnet.com
553 paul.green\100stratus.com               paul_greenvos\100vos.stratus.com
554 +                                                                               pgreen\100seussnt.stratus.com
555 paul.marquess\100btinternet.com         paul_marquess\100yahoo.co.uk
556 +                                       paul.marquess\100ntlworld.com
557 +                                       paul.marquess\100openwave.com
558 +                                       pmarquess\100bfsec.bt.co.uk
559 +                                       pmqs\100cpan.org
560 pcg\100goof.com                         schmorp\100schmorp.de
561 perl\100cadop.com                       cdp\100hpescdp.fc.hp.com
562 perl\100greerga.m-l.org                                 greerga\100m-l.org
563 perl\100profvince.com                   vince\100profvince.com
564 perl-rt\100wizbit.be                    p5p\100perl.wizbit.be
565 # Maybe we should special case this to get real names out?
566 perlbug\100perl.org                     perlbug-followup\100perl.org
567 +                                       bugs-perl5\100bugs6.perl.org
568 Peter.Dintelmann\100Dresdner-Bank.com   peter.dintelmann\100dresdner-bank.com 
569 # NOTE: There is an intentional trailing space in the line above
570 pfeifer\100wait.de                      pfeifer\100charly.informatik.uni-dortmund.de
571 +                                                                               upf\100de.uu.net
572 phil\100perkpartners.com                phil\100finchcomputer.com
573 pimlott\100idiomtech.com                andrew\100pimlott.net
574 +                                                                               pimlott\100abel.math.harvard.edu
575 pne\100cpan.org                         philip.newton\100gmx.net
576 +                                       philip.newton\100datenrevision.de
577 +                                       pnewton\100gmx.de
578 pprymmer\100factset.com                 pvhp\100forte.com
579 public\100khwilliamson.com              khw\100karl.(none)
580
581 radu\100netsoft.ro                      rgreab\100fx.ro
582 raphael.manfredi\100pobox.com           raphael_manfredi\100grenoble.hp.com
583 renee.baecker\100smart-websolutions.de          reneeb\100reneeb-desktop.(none)
584 richard.foley\100ubsw.com               richard.foley\100t-online.de
585 +                                       richard.foley\100ubs.com
586 +                                       richard.foley\100rfi.net
587 rick\100consumercontact.com             rick\100bort.ca
588 +                                       rick.delaney\100rogers.com
589 +                                       rick\100bort.ca
590 rjbs\100cpan.org                        rjbs-perl-p5p\100lists.manxome.org
591 +                    perl.p5p\100rjbs.manxome.org
592 rjk\100linguist.dartmouth.edu           rjk\100linguist.thayer.dartmouth.edu
593 +                                       rjk-perl-p5p\100tamias.net
594 rjray\100redhat.com                        rjray\100uswest.com
595 rmgiroux\100acm.org                     rmgiroux\100hotmail.com
596 +                                                                               mgiroux\100bear.com
597 rmbarker\100cpan.org                    rmb1\100cise.npl.co.uk
598 +                                       robin.barker\100npl.co.uk
599 +                                       rmb\100cise.npl.co.uk
600 robertmay\100cpan.org                   rob\100themayfamily.me.uk
601 roberto\100keltia.freenix.fr                    roberto\100eurocontrol.fr
602 robin\100cpan.org                       robin\100kitsite.com
603 roderick\100argon.org                   roderick\100gate.net
604 +                                                                               roderick\100ibcinc.com
605 rootbeer\100teleport.com                rootbeer\100redcat.com
606 +                                                                               tomphoenix\100unknown
607 schubiger\100cpan.org                   steven\100accognoscere.org
608 +                                       sts\100accognoscere.org
609 +                                       schubiger\100gmail.com
610 schwern\100pobox.com                    schwern\100gmail.com
611 +                                       schwern\100athens.arena-i.com
612 +                                       schwern\100blackrider.aocn.com
613 +                                       schwern\100ool-18b93024.dyn.optonline.net
614 schwab\100suse.de                                               schwab\100issan.informatik.uni-dortmund.de
615 +                                                                               schwab\100ls5.informatik.uni-dortmund.de
616 sebastien\100aperghis.net               maddingue\100free.fr
617 +                                       saper\100cpan.org
618 shlomif\100vipe.technion.ac.il          shlomif\100iglu.org.il
619 simon\100simon-cozens.org               simon\100pembro4.pmb.ox.ac.uk
620 +                                       simon\100brecon.co.uk
621 +                                       simon\100othersideofthe.earth.li
622 +                                       simon\100cozens.net
623 +                                       simon\100netthink.co.uk
624 slaven\100rezic.de                      slaven.rezic\100berlin.de
625 +                                       srezic\100iconmobile.com
626 +                                       srezic\100cpan.org
627 +                                                                               eserte\100cs.tu-berlin.de
628 smcc\100mit.edu                         smcc\100ocf.berkeley.edu
629 +                                       smcc\100csua.berkeley.edu
630 +                                       alias\100mcs.com
631 +                                       smccam\100uclink4.berkeley.edu
632 spider\100orb.nashua.nh.us              spider\100web.zk3.dec.com
633 +                                       spider\100leggy.zk3.dec.com
634 +                                       spider-perl\100orb.nashua.nh.us
635 +                                       spider\100peano.zk3.dec.com
636 +                                       spider.boardman\100orb.nashua.nh.us>
637 +                                       spidb\100cpan.org
638 +                                                                               spider.boardman\100orb.nashua.nh.us
639 spp\100ds.net                           spp\100psa.pencom.com
640 +                                       spp\100psasolar.colltech.com
641 +                                       spp\100spotter.yi.org
642 stef\100mongueurs.net                   stef\100payrard.net
643 +                                       s.payrard\100wanadoo.fr
644 +                                                                               properler\100freesurf.fr
645 +                                                                               stef\100francenet.fr
646
647 tassilo.parseval\100post.rwth-aachen.de tassilo.von.parseval\100rwth-aachen.de
648 tchrist\100perl.com                      tchrist\100mox.perl.com
649 +                                        tchrist\100jhereg.perl.com
650 thomas.dorner\100start.de                tdorner\100amadeus.net
651 tjenness\100cpan.org                     t.jenness\100jach.hawaii.edu
652 +                                        timj\100jach.hawaii.edu
653 tom.horsley\100mail.ccur.com             tom.horsley\100ccur.com
654 +                                        tom\100amber.ssd.hcsc.com
655
656 vkonovalov\100lucent.com                  vkonovalov\100peterstar.ru
657 +                                         konovalo\100mail.wplus.net
658 +                                         vadim\100vkonovalov.ru
659 +                                         vkonovalov\100spb.lucent.com
660 +                                         vkonovalov\100alcatel-lucent.com
661
662 whatever\100davidnicol.com                davidnicol\100gmail.com
663 wolfgang.laun\100alcatel.at               wolfgang.laun\100chello.at
664 +                                         wolfgang.laun\100thalesgroup.com
665 +                                         wolfgang.laun\100gmail.com